Erreur de mysql_query

Eléphant du PHP | 66 Messages

17 juil. 2008, 18:36

Bonjour a tous,

J'ai un petit problème et je trouve vraiment pas quel es le problème
j'utilise WampServer 2.0 ( php5 .. )

<form action=?section=modererdoc&moderer=ok method=POST name='".$data_docs_lignes['id']."'>
$id_form            =$_POST['id_form'];
$references_form    =$_POST['references_form'];
$titre_form         =$_POST['titre_form'];
$description_form   =$_POST['description_form'];
$quantite_form      =$_POST['quantite_form'];
$prix1_form         =$_POST['prix1_form'];
$rabais_form        =$_POST['rabais_form'];
mysql_query(" UPDATE docs_lignes SET references=\"$references_form\",titre=\"$titre_form\",description=\"$description_form\",quantite=\"$quantite_form\",prix1=\"$prix1_form\",rabais=\"$rabais_form\" WHERE id=\"$id_form\" ") or die('Erreur !<br>'.$sql.'<br>'.mysql_error());
il me print toujours :

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'references="test",titre="test",description="test",quantite="test",prix1="test",rabais="test" WHERE id="7' at line 1


Je vous remercie beaucoup si vous trouvez la solution, passez une belle journée !

Mammouth du PHP | 1353 Messages

17 juil. 2008, 19:10

Je pense que ton champ ID n'est pas de type TEXT.

Il faut donc faire un

Code : Tout sélectionner

WHERE id=X
et non pas

Code : Tout sélectionner

WHERE id="X"
....
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Mammouth du PHP | 959 Messages

17 juil. 2008, 20:42

C'est pas une erreur du mysql_query() c'est tout simplement une erreur de ta requête SQL, donc, si un modo, passe ici, c'est dans le forum SQL & bases de données :)

Pour ton problème, il est préférable de mettre des apostrophes ( " ) dans ton <form> ;)


Pour ta requête, il est préférable également de pas avoir recours au backslash ( \ ) pour tes apostrophes, après, ont s'embrouille....
donc, moi, perso, je l'écrirait comme ça :
mysql_query('UPDATE docs_lignes SET references="'.$references_form.'", titre="'.$titre_form.'", description="'.$description_form.'", quantite="'.$quantite_form.'", prix1="'.$prix1_form.'", rabais="'.$rabais_form.'" WHERE id="'.$id_form.'"') or die('Erreur !<br />'.mysql_error());
Plus clair, plus pro, plus compréhensif ;) ^^

ViPHP
ViPHP | 2291 Messages

17 juil. 2008, 22:33

Salut.

N'oublie pas de te protégé contre les injections
Proposition de correction:
<?php

$id_form            = mysql_real_escape_string($_POST['id_form']);
$references_form    = mysql_real_escape_string($_POST['references_form']);
$titre_form         = mysql_real_escape_string($_POST['titre_form']);
$description_form   = mysql_real_escape_string($_POST['description_form']);
$quantite_form      = mysql_real_escape_string($_POST['quantite_form']);
$prix1_form         = mysql_real_escape_string($_POST['prix1_form']);
$rabais_form        = mysql_real_escape_string($_POST['rabais_form']);


            $sql = " UPDATE docs_lignes
                            SET
                                references    = '".$references_form."',
                                titre         = '".$titre_form."',
                                description   = '".$description_form."',
                                quantite      = '".$quantite_form."',
                                prix1         = '".$prix1_form."',
                                rabais        = '".$rabais_form."'
                           WHERE
                                id            = '".$id_form."'";

                            $resultat = mysql_query($sql) or die('Erreur MySQL : ton message ici !<br>'.$sql.'<br>'.mysql_error());

?>

Eléphant du PHP | 66 Messages

18 juil. 2008, 13:30

Voila que rien functionne encore :S c'est vraiment bizare toujour la memme erreur..

voici mon form :
$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs=\"$id\" ORDER BY id ASC"; 
$req_docs_lignes = mysql_query($sql_docs_lignes) or die('Erreur !<br>'.$sql_docs_lignes.'<br>'.mysql_error()); 
while($data_docs_lignes = mysql_fetch_assoc($req_docs_lignes)) 
{
echo " 
<tr bgcolor=\""; echo switchcolortable(); echo "\">
<td>
<form action='?section=modererdoc&moderer=form&id=".$data_docs['id']."' method='POST' name='".$data_docs_lignes['id']."'>
<input type='hidden' name='id_form' size='8' value='".$data_docs_lignes['id']."'>
<center><input type='text' name='references_form' size='8' value='".$data_docs_lignes['references']."'>
<td><center><input type='text' name='titre_form' size='25' value='".$data_docs_lignes['titre']."'>
<td><center><textarea name='description_form' cols='45' rows='3'>".$data_docs_lignes['description']."</textarea>
<td><center><input type='text' name='quantite_form' size='5' value='".$data_docs_lignes['quantite']."'>
<td><center><input type='text' name='prix1_form' size='5' value='".$data_docs_lignes['prix1']."'>
<td><center><input type='text' name='rabais_form' size='5' value='".$data_docs_lignes['rabais']."'>

<td><center><br><input type='submit' name='submit' value='Save'> <a href=?section=modererdoc&supprimer=ligne&idligne=".$data_docs_lignes['id']."&id=$id><img border=0 src=img/delete.png alt='Supprimer cette ligne'></a> </form>
";
}
Image

Je vous remercie pour le temps que vous prenez pour esseyer de m'aider.

Eléphanteau du PHP | 41 Messages

18 juil. 2008, 13:50

$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs=\"$id\" ORDER BY id ASC";  
remplace par:
$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs='$id' ORDER BY id ASC";  
enjoy :mrgreen:

Mammouth du PHP | 1353 Messages

18 juil. 2008, 14:29

$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs="$id" ORDER BY id ASC";  
remplace par:
$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs='$id' ORDER BY id ASC";  
enjoy :mrgreen:
:shock: :shock: :shock:
les deux syntaxes que tu proposes sont rigoureusement identiques... le \ permet d'échapper le " donc faire un
echo ""bonjour""; //affichera "bonjour";
echo "'bonjour'"; //affichera 'bonjour'; 
donc ca revient au même sauf que dans un cas c'est des simple quotes et dans l autre des doubles...

Sinon scadox tu as fais quoi exactement ? Toujours la meme erreur sur la même requete ou celle que tu montres par la suite ? montre nous ta requete qui marche pas et le code correspondant stp...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 41 Messages

18 juil. 2008, 14:38

oui mais je trouve cela plus simple a comprendre après quand il y a trop de \ partout on ne s'y retrouve plus(enfin pour moi^^)
Après je ne sais pas désoler j'ai bau chercher rien ne viens. :?

Mammouth du PHP | 881 Messages

18 juil. 2008, 15:26

Il semble y avoir un problème de guillemets et apostrophes, c'est classique.
Pour le trouver, commence par sotir ton FORM de la zone <?PHP la coloration de ta syntaxe par ton éditeur te permettra de repérer les fautes de frappe, les " et ' en trop ou en manque dans ton FORM.
Quand tout cela sera correct, alors tu pourras le planter dans ton ECHO

Tu peux aussi, pour repérer une faute de " ou ', avec FireFox, faire "Afficher la source". FF colorera alors le texte selon la syntaxe HTML et tu pourras rapidement repérer ton erreur.
Soyez artisans de paix

ViPHP
ViPHP | 2291 Messages

18 juil. 2008, 15:53

Question stupide probablement :wink:
Mais ceci me semble bizarre :
<form action='?section=modererdoc&moderer=form&id
Ne manque t'il pas le fichier.php :?:

Eléphanteau du PHP | 41 Messages

18 juil. 2008, 16:06

tout dépend si cela redirige sur le même fichier ou pas ;)

Mammouth du PHP | 959 Messages

18 juil. 2008, 18:18

Voila que rien functionne encore :S c'est vraiment bizare toujour la memme erreur..
Et..... quelle est ton erreur ? :roll:

ViPHP
ViPHP | 2291 Messages

18 juil. 2008, 18:27

Une question $id il correspond a quoi :?:

Eléphant du PHP | 66 Messages

18 juil. 2008, 18:34

le href=?... sa functionne si tu reste dans le memme fichier .. comme moi je j'essey de faire le tout dans le memme fichier possible comme exemple config.php et index.php

Pour les \" \" au lieu de ' ' je fait ceci car si exemple le texte dans le input est [ j'aime les fruits ] .. il va seulement prendre le [ j ] et non le reste c'est pour sa que je met des \"

DrEAM's a écrit:
PHP:
$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs=\"$id\" ORDER BY id ASC";

remplace par:
PHP:
$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs='$id' ORDER BY id ASC";
j'ai pas de problème pour faire afficher les entrées de MySQL ... ces seulement lorsque je click sur le 'SUBMIT' du form qu'il ne veut pas UPDATE ..

dunbar lorsque j'insert ton code ... aucun erreur ne s'affiche ... comme si le UPDATE serais ok mais dans MySql rien ne change via phpmyadmin[/b]

a quoi sert le $id
Je vais expliquer..

La page présent .. es un Document ( devis ou facture)
donc exemple ?section=modererfacture&id=\"".$data_docs['id']."\"

dans chaques Document ( docs = mysql )
il a des lignes de codes ( docs_lignes = mysql )

dans chaques lignes : comme ci-dessous = 3
Image
les 3 docs_lignes s'affiche bien dans le tableaux

Mon lien [ ajouter une ligne de produit ] functionne tres bien ! =
echo "[ <a href=?section=modererdoc&ajouter=ligne&id=$id><b>Ajouter une ligne de produit</b></a> ]";
if($ajouter=$_GET['ajouter']=="ligne")
{
$id=$_GET['id'];
mysql_query(" INSERT INTO docs_lignes (id_docs) VALUES (\"$id\")") or die('Erreur !<br>'.$sql.'<br>'.mysql_error());
echo "<script type=\"text/javascript\">function redirection_js(){ x=setTimeout(\"window.location.href='?section=modererdoc&id=$id'\",1); }    </script><body onLoad=\"redirection_js();\">";
}
[/b]

c'est seulement mon UPDATE qu'il functionne pas avec mon form pour modifier la ligne de produit

Erreur MySQL :
UPDATE docs_lignes SET references = 'fh1', titre = 'Forfait No.1', description = '1 nom de domaine gratuit\r\n500 megs d\'espaces\r\n2 gig de bandes passantes\r\n5 courriers électroniques\r\n2 base de données', quantite = '12', prix1 = '4.95', rabais = '' WHERE id = '1'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'references = 'fh1', titre = 'Forfai' at line 3
Modifié en dernier par scadox le 18 juil. 2008, 18:54, modifié 2 fois.

ViPHP
ViPHP | 2291 Messages

18 juil. 2008, 18:39

le href=?... sa functionne si tu reste dans le memme fichier .. comme moi je j'essey de faire le tout dans le memme fichier possible comme exemple config.php et index.php

Pour les " " au lieu de ' ' je fait ceci car si exemple le texte dans le input est [ j'aime les fruits ] .. il va seulement prendre le [ j ] et non le reste c'est pour sa que je met des "

DrEAM's a écrit:
PHP:
$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs="$id" ORDER BY id ASC";

remplace par:
PHP:
$sql_docs_lignes = "SELECT * FROM docs_lignes WHERE id_docs='$id' ORDER BY id ASC";
j'ai pas de problème pour faire afficher les entrées de MySQL ... ces seulement lorsque je click sur le 'SUBMIT' du form qu'il ne veut pas UPDATE ..

dunbar lorsque j'insert ton code ... aucun erreur ne s'affiche ... comme si le UPDATE serais ok mais dans MySql rien ne change via phpmyadmin[/b]
et si tu affiche ta requete update cela donne quoi :?: