erreur

Invité
Invité n'ayant pas de compte PHPfrance

06 janv. 2009, 18:06

Bonjour,

voila j'ai un souci j'ai une requete qui fonctionne très bien lorsque je met un echo devant et que je fais ensuite un copier coller sur phpmyadmin, mais lorsque je remplace le echo par mysql_query elle ne fonctionne pas. je n'ai vraiement aucune idée d'ou cela peux venir. J'ai deja de nombreuses pages et toutes fonctionne, alors qu'elles sont sur le même principe. ça doit être tellement bête, que je trouve pas.
ma requete :
mysql_query("update contact set type='$type',
code_ville='$code_ville',
tel='$tel',
fax='$fax',
nom='$nom',
nom='$nom',
commentaire='$commentaire' 
where num= '$num'");
merci

Eléphant du PHP | 139 Messages

06 janv. 2009, 18:09

Bonjour,

Peut-etre que la structure de la table SQL et un exemple de requete qui plante pourrait nous aider :oops:

Eléphant du PHP | 174 Messages

06 janv. 2009, 18:42

Bonsoir,
Peut-etre que la structure de la table SQL et un exemple de requete qui plante pourrait nous aider :oops:
Il vient de le dire : le copier/coller de la requête fonctionne de manière directe, ici la structure de BDD ne sert donc pas.

Le problème vient plutôt de la rédaction de la requête en php.

est ce que ça ne fonctionnerait pas mieux ainsi :

Code : Tout sélectionner

mysql_query("update contact set type='".$type."', code_ville='".$code_ville."', tel='".$tel."', fax='".$fax."', nom='".$nom."', nom='".$nom."', commentaire='".$commentaire."' where num= '".$num."'");
Si tu ne concatènes pas tes variables, cela ne fonctionne pas en général, l'ajout des ". pallie le problème :)

autre chose : tu as deux fois le champs "nom" !
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

ViPHP
fab
ViPHP | 2657 Messages

06 janv. 2009, 20:31

Si on utilise la concaténation autant le faire bien :


- Une chaine entre " " sera interprétée par PHP ce qui consomme donc un peu plus de ressources
exemple:
$name  = 'fab';
$phrase = "Mon nom est $name";
echo $phrase; // retourne Mon nom est fab
- Une chaine entre ' ' ne sera pas interprétée par PHP
exemple;
$name  = 'fab';
$phrase = 'Mon nom est $name';
echo $phrase; // retourne Mon nom est $name

Donc pour faire une requete propre :
$req = 'UPDATE contact 
              SET type="'.$type.'",
              code_ville='.$code_ville.'
              tel="'.$tel.'",
              nom="'.$nom.'",
              commentaire="'.$commentaire.'"
            WHERE num = '.$num.';
mysql_query($req);
J'ai supposé que $code_ville et $num sont de type int sinon mysql nécessite des " " autour de ces variables
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Invité
Invité n'ayant pas de compte PHPfrance

07 janv. 2009, 10:30

donc j'ai repris cette requete
$req = 'UPDATE contact  
              SET type="'.$type.'", 
              code_ville='.$code_ville.' 
              tel="'.$tel.'", 
              nom="'.$nom.'", 
              commentaire="'.$commentaire.'" 
            WHERE num = '.$num.'; 
mysql_query($req);
et même probleme qu'avec la mienne, avec echo cela fonctionne sinon non, mais bien sur aucun message d'erreur !!! la je comprend vraiment rien

ViPHP
ViPHP | 2291 Messages

07 janv. 2009, 10:34

Il y a une erreur de syntaxe et il manque une ,
$req = 'UPDATE contact   
              SET type="'.$type.'",  
              code_ville='.$code_ville.'  
              tel="'.$tel.'",  
              nom="'.$nom.'",  
              commentaire="'.$commentaire.'"  
            WHERE num = '.$num.';  
mysql_query($req); 
Proposition de correction :
$req = 'UPDATE contact   
              SET type="'.$type.'",  
              code_ville="'.$code_ville.'" , 
              tel="'.$tel.'",  
              nom="'.$nom.'",  
              commentaire="'.$commentaire.'"  
            WHERE num = "'.$num.'"';  
mysql_query($req);

Invité
Invité n'ayant pas de compte PHPfrance

07 janv. 2009, 10:37

oui j'ai essayé comme ça aussi, idem. merci

ViPHP
fab
ViPHP | 2657 Messages

07 janv. 2009, 15:14

if(!mysql_query($req))
 echo mysql_errno() . ": " . mysql_error() . "\n";
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }