pb de requete mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : pb de requete mysql

Re: pb de requete mysql

par moogli » 02 mai 2013, 14:54

pourquoi ne pas essayé la requête que je t'ai indiqué ?

le count est la requête à utiliser dans ton cas (sauf si tu veux ta baser sur la clef primaire et traiter l'erreur envoyer par le SGBD).

Ton erreur est dû au fait que tu essai d'utiliser une colonne qui n'existe pas ...

@brice83 : non pas de or die, il faut tester le retour de mysql_query (et des autres fonction mysl_*) et le cas échéant afficher l'erreur ou la logger et affiche un message d'erreur correcte et non arrêter le déroulement de la page quitte à laisser l'utilisateur sur une message d'erreur et une page blanche (très frustrant).

donc par exemple
<?php
$ret = mysql_query('la requete');
if($ret === false) {
// gestion de l'erreur
}
else {
// traitement des données résultat. 
// Attention être là ne signifie pas qu'il y a des données, seulement que la requête c'est bien déroulée. 
}
?>
@+

Re: pb de requete mysql

par Brice83 » 02 mai 2013, 08:07

Bonjour,

dans tes 2 requetes :
$sql3 = "insert into contrat_vendeur values ('$num','$vendeur','$dateCtr','vendeur','13000');";

$sql4 = "insert into contrat_vendeur values ('$num','$controleur','$dateCtr','controleur','7000');";
Je vois que tu insert donc 2 fois dans la meme table en commençant par $num (le numéro de contrat donc). Mais le champ numéro de contrat de ta table "contrat_vendeur", peut etre que tu as fait une erreur dans la structure de ta bdd et que ce champ doit etre unique. Si c'est le cas, tes requetes foire car le numéro de contrat doit etre insérer qu'une seule fois ...

Vérifie la structure de ce champ car je trouve que ton code est correct.

Et n'hésite pas à rajouter or die ('Erreur : '.mysql_error());

Cela aide grandement à savoir les erreurs :)

Re: pb de requete mysql

par moez2210 » 02 mai 2013, 01:19

j'ai modifié le code :
mysql_connect('localhost', 'root', '') OR die('Erreur de connexion');
     mysql_select_db('hannibal') OR die('Sélection de la base impossible');
     
     
     $sql1 = " select * from contrat where num_contrat = $num";

     $sql2 = "insert into contrat values ('$num','$dateCtr','$vendeur','$NatArt','1','$montant_total','$avance','$solde','facilite',
	 '$NomClt','$PrenomClt','$AdrClt','$VilleClt','$TelClt','$CinClt','$DateNaissClt','$LieuNaissClt','$AdrCinClt',
	 '$DelivrCinClt','$controleur');";

	  $sql3 = "insert into contrat_vendeur values ('$num','$vendeur','$dateCtr','vendeur','13000');";

	
	  $sql4 = "insert into contrat_vendeur values ('$num','$controleur','$dateCtr','controleur','7000');";

     $req1 = mysql_query($sql1);
	 $result = mysql_result($req1,0);
	
	
	 if(empty($result)){
	 	
	 mysql_query($sql2);mysql_query($sql3);mysql_query($sql4);
	 }
	 else{echo "ce numero de contrat existe deja";}

lorsque le numero existe c bon je recoit le message:ce numero de contrat existe deja
mais quand il s'agit d'un nouveau contrat ça me retourne:

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 4 in C:\Program Files\EasyPHP-5.3.2\www\hannibal_final\valid3.php on line 56

Re: pb de requete mysql

par moogli » 01 mai 2013, 23:38

salut,


plutot un
<?php
$sql = 'select count(uncolonne) as nb from contrat where num_contrat=\''.mysql_real_escape_string($num).'\'';
// mysql_query + mysql_fetch_assoc si "$data['nb']" == 0 => insertion
?>
Je t'invite à regarder l'extension mysqli en remplacement de l'extention mysql qui est vouée à disparaitre.


@+

Re: pb de requete mysql

par moez2210 » 01 mai 2013, 23:11

la boucle va verifier si le numero du contrat a deja été affecté a un contrat précédent
sinon
il doit executer les trois requetes

Re: pb de requete mysql

par ghost5922 » 01 mai 2013, 23:02

Bonjour,

je ne comprend pas beaucoup une boucle ?

si j'ai bien compris cette requête vous vérifier la pressent d'un client

si pressent alors on affiche le message
sinon on insert dans les tables

c'est bien cela ?

si oui alors il vous faut faire une requête avec un where num_contrat='$num' avec cela si vous avez un résultat c'est que le client et déjà pressent sinon on insert

pb de requete mysql

par moez2210 » 01 mai 2013, 22:38

j'ai 2 tables contrat et contrat_vendeur mon problème c de faire une sélection de la table contrat, si le numéro du contrat existe===>il ne se passe rien ,sinon les valeur seront insérées ds les 2 tables mais le problème avec mon code c qu'il n'exécute que (mysql_query($sql2);) lorsqu'il s'agit d'un nouveau contrat
      mysql_connect('localhost', 'root', '') OR die('Erreur de connexion');
      mysql_select_db('hannibal') OR die('Sélection de la base impossible');
      $sql1 = " select * from contrat";

         $sql2 = "insert into contrat values ('$num','$dateCtr','$vendeur','$NatArt','1','$montant_total','$avance','$solde','facilite',
	 '$NomClt','$PrenomClt','$AdrClt','$VilleClt','$TelClt','$CinClt','$DateNaissClt','$LieuNaissClt','$AdrCinClt',
	 '$DelivrCinClt','$controleur');";

	  $sql3 = "insert into contrat_vendeur values ('$num','$vendeur','$dateCtr','vendeur','13000');";

	
	  $sql4 = "insert into contrat_vendeur values ('$num','$controleur','$dateCtr','controleur','7000');";

	  $req1 = mysql_query($sql1);
	  
	
       while($row = mysql_fetch_assoc($req1)){
	
	  if($row['num_contrat']=$num){echo"il existe deja un contrat dont le numero est:$num ";}
	  else{
	   mysql_query($sql2);
	   mysql_query($sql3) ;
	   mysql_query($sql4) ;
	   }
	}