message erreur avec MySql : an error in your SQL syntax;

Eléphant du PHP | 92 Messages

26 mars 2010, 17:34

Bonjour,

J’ai une question,

PHP

J’ai un fichier (edit_form.php)
Le contenu s’affiche dans les champs de texte par les informations qui se trouvent dans mySql selon le paramètre d’URL :

http://toto.com/edit_form.php?id=70
ID s’affiche aussi dans un champ de texte, mais non modifiable (readonly=\"readonly\")



Voici le code :

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>toto</title> </head> <body> <form name="editForm" method="post" action="edit_form_proceded.php"> <table> <tr> <td align="center">CONTACT DB</td> </tr> <tr> <td><table border="1" width="100%"> <tr> <td>ID</td> <td>PRENOM</td> <td>NOM</td> <td>#</td> <td>RUE</td> <td>VILLE</td> </tr> <?php //recuperation la valeur d'un paramettre d'url $var_id=$_GET['id']; //echo $var_id; //connection au serveur include"connection.php"; //selection de bd include"selection.php"; $rep = "SELECT id,bd_prenom,bd_nom,bd_numero_adresse,bd_rue_adresse,bd_ville_adresse FROM $table_db WHERE id=$var_id"; //$var_id ------------­­> recuperation la valeur d'un paramettre d'url //$table_db ------------­­> venu par selection.php $result = mysql_query($rep); while($data = mysql_fetch_row($result)){ echo("<tr><td><input type=\"text\" name=\"id\" id=\"id\" value=\"$data[0]\" readonly=\"readonly\" /></td><td><input type=\"text\" name=\"prenom\" id=\"prenom\" value=\"$data[1]\"/></td><td><input type=\"text\" name=\"nom\" id=\"nom\" value=\"$data[2]\"/></td><td><input type=\"text\" name=\"numero_adresse\" id=\"numero_adresse\" value=\"$data[3]\"/></td><td><input type=\"text\" name=\"rue_adresse\" id=\"rue_adresse\" value=\"$data[4]\"/></td><td><input type=\"text\" name=\"ville_adresse\" id=\"ville_adresse\" value=\"$data[5]\"/></td></tr>"); } ?> </table></td> </tr> </table> <input type="submit" name="btn_valider" value="Valider/Enregistrer"> </form> </body>
Jusqu’au là, tout va bien.

Ensuite, j’ai fait mon fichier edit_form_proceded.php

Voici mon code

Code : Tout sélectionner

<?php //connection au serveur include"bd_db/connection.php"; //sélection de la base de données et table include"bd_db/selection.php"; //$table_db = "nomdeMonTableDans MySql"; vient par le fichier selection.php //$table_db="ma_table"; $var_id=""; if(!empty($_POST["id"])) $var_id=addslashes($_POST["id"]); $var_prenom=""; if(!empty($_POST["prenom"])) $var_prenom=addslashes($_POST["prenom"]); $var_nom=""; if(!empty($_POST["nom"])) $var_nom=addslashes($_POST["nom"]); $var_numero_adresse=""; if(!empty($_POST["numero_adresse"])) $var_numero_adresse=addslashes($_POST["numero_adresse"]); $var_rue_adresse=""; if(!empty($_POST["rue_adresse"])) $var_rue_adresse=addslashes($_POST["rue_adresse"]); $var_ville_adresse=""; if(!empty($_POST["ville_adresse"])) $var_ville_adresse=addslashes($_POST["ville_adresse"]); // modifier enregistrement $var_query = "UPDATE bd_prenom,bd_nom,bd_numero_adresse,bd_rue_adresse,bd_ville_adresse FROM $table_db WHERE id=$var_id"; //bd_prenom,bd_nom,bd_numero_adresse,bd_rue_adresse,bd_ville_adresse et id les noms de collones dans bd //$table_db ------------­­> venu par selection.php $var_query .= "VALUES ('$var_prenom','$var_nom','$var_numero_adresse','$var_rue_adresse','$var_ville_adresse')"; $result = mysql_query($var_query, $cnx) or die (mysql_error()); //$cnx ------------­­> venu par connection.php : // $cnx = mysql_connect( "totot", "nomLogin", "password" ) ; ?>
Je me demande si ma requête UPDATE n’est pas bonne ? … ou bien il y a un problème avec la colonne « bd_ville_adresse » parce que je ne vois pas le nom de la ville dans le message d’erreur (il est vide)…

En fait, j’ai rectifié les champs par : prénom [toto ] nom [titi ] numéro [111 ] rue [rue lantiez] ville [berlin]

Voici le message d’erreur :
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 'FROM tb_sndg_paroisse_test WHERE id=57VALUES ('toto','titi','1111','rue lantiez','' at line 1

Alors, que faire ?

Bonne journée

Eléphant du PHP | 109 Messages

26 mars 2010, 18:33

Bonjour,

ta requête UPDATE est en effet incorrecte.

Ceci est incorrect :
UPDATE mesChamps FROM maTable WHERE id=$id VALUES ('$maValeur')
Ceci est correct :
UPDATE mesChamps SET mesChamps='$maValeur' WHERE id=$id
Par conséquent, la requête que tu as fournie deviendrais :
UPDATE bd_prenom, bd_nom, bd_numero_adresse, bd_rue_adresse, bd_ville_adresse FROM $table_db SET bd_prenom='$var_prenom', bd_nom='$var_nom', bd_numero_adresse='$var_numero_adresse', bd_rue_adresse='$var_rue_adresse', bd_ville_adresse='$var_rue_adresse' WHERE id=$var_id
La doc' de UPDATE : http://dev.mysql.com/doc/refman/5.1/en/update.html (anglaise, j'ai pris se que j'avais sous la main ^^)

Voila, j'espère t'avoir aidé ;)
ANSI <font> <font> <font> <li> <p> <title> Mar I/O .NET

Eléphant du PHP | 92 Messages

26 mars 2010, 19:23

Salut SinBert,

Super gentil...

Voila ce que j'ai fait mais ça ne marche pas...

Code : Tout sélectionner

<?php //connection au serveur include"bd_db/connection.php"; //sélection de la base de données et table include"bd_db/selection.php"; //$table_db = "nomdeMonTableDans MySql"; vient par le fichier selection.php //$table_db="ma_table"; $var_id=""; if(!empty($_POST["id"])) $var_id=addslashes($_POST["id"]); $var_prenom=""; if(!empty($_POST["prenom"])) $var_prenom=addslashes($_POST["prenom"]); $var_nom=""; if(!empty($_POST["nom"])) $var_nom=addslashes($_POST["nom"]); $var_numero_adresse=""; if(!empty($_POST["numero_adresse"])) $var_numero_adresse=addslashes($_POST["numero_adresse"]); $var_rue_adresse=""; if(!empty($_POST["rue_adresse"])) $var_rue_adresse=addslashes($_POST["rue_adresse"]); $var_ville_adresse=""; if(!empty($_POST["ville_adresse"])) $var_ville_adresse=addslashes($_POST["ville_adresse"]); // modifier enregistrement $var_query = "UPDATE bd_prenom, bd_nom, bd_numero_adresse, bd_rue_adresse, bd_ville_adresse FROM $table_db SET bd_prenom='$var_prenom', bd_nom='$var_nom', bd_numero_adresse='$var_numero_adresse', bd_rue_adresse='$var_rue_adresse', bd_ville_adresse='$var_rue_adresse' WHERE id=$var_id"; $result = mysql_query($var_query, $cnx) or die (mysql_error()); ?>
j’ai rectifié les champs par : prénom [titi] nom [toto] numéro [111 ] rue [coucou] ville [paris]


voici le message d'erreur :
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 'FROM tb_sndg_paroisse_test SET bd_prenom='titi', bd_nom='toto', bd_numero_adress' at line 1

Eléphant du PHP | 92 Messages

26 mars 2010, 20:24

Voici la réponse

J'ai enlevé les ([) et (] )



alors j'ai fait

Code : Tout sélectionner

$var_query = "UPDATE $table_db SET bd_prenom='$var_prenom',bd_nom='$var_nom',bd_numero_adresse='$var_numero_adresse',bd_rue_adresse='$var_rue_adresse',bd_ville_adresse='$var_ville_adresse' WHERE id=$var_id";


marche sans erreur
:)

ViPHP
ViPHP | 1024 Messages

26 mars 2010, 20:25

La syntaxe d'un UPDATE est plutôt celle-ci :
UPDATE $table_db 
SET bd_prenom='$var_prenom', 
    bd_nom='$var_nom', 
   bd_numero_adresse='$var_numero_adresse', 
   bd_rue_adresse='$var_rue_adresse', 
   bd_ville_adresse='$var_rue_adresse' 
WHERE id=$var_id
A+

Pascal

Eléphant du PHP | 92 Messages

26 mars 2010, 20:34

Bonsoir Pascal,

Un Grand Merci