Problème - mysql_query("UPDATE

Répondre
hartek
le 26/03/2009 à 13:41
hartek
Bonjour,
Je suis novice en php et MySQL, et j'ai un gros problème.

Via un formulaire je désir changer la date d'un stage dans une table, mais j'ai une erreur qui me dis ça quand je valide le formulaire.

Message :
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 'WHERE ID='0'' at line 1

Voici mon formulaire

<form name="modifDate" method="post" action="traitement_date.php"> 
<h5>Modification des Dates</h5>
<label>Selection du fichier : </label>
<select name="fichier">
<option value="">Choix du fichier</option>
<option value="fichier"> fichier 1</option>
<option value=" fichier "> fichier 2</option>
<option value=" fichier "> fichier 3</option>
<option value=" fichier "> fichier 4</option>
<option value=" fichier "> fichier 5</option>
</select>
<label>Nouvelle date : </label><input name="nouvelleDate" type="text" />
<input name="" type="submit" value="Envoyer" />
</form>


Et voici la page de traitement:
if($_POST['fichier'] == "fichier  1")
$table = " fichier 1";
elseif($_POST['fichier'] == " fichier 2")
$table = " fichier 2";
elseif($_POST['fichier'] == " fichier 3")
$table = " fichier 3";
elseif($_POST['fichier'] == " fichier 4")
$table = " fichier 4";
elseif($_POST['fichier'] == " fichier 5")
$table = " fichier 5";
else
echo"<img src=\"img/Close.png\" align=\"left\" width=\"100\" height=\"100\">Une erreur c'est produite, vous n'avez pas indiquez le fichier a modifier !<br>
<a href=\"gestion_date.php\">Revenir à la page </a>";
//Si pas de probleme
mysql_connect("localhost", "login", "mdp"); // Connexion
mysql_select_db("base"); // Sélection de la bdd

mysql_query("UPDATE $table SET date= “.$_POST['nouvelleDate'].” WHERE ID='0' ") or die(mysql_error());
mysql_close(); // Déconnexion de MySQL


Merci d'avance
LA GLOBULE
le 26/03/2009 à 14:02
LA GLOBULE
Il faut que tu entoures ta date de guillemets.

Exemple :

<?php
mysql_query("UPDATE ".$table." SET date = '".mysql_escape_string($_POST['nouvelleDate'])."' WHERE ID='0'") or die(mysql_error());
?>


Pense aussi à utiliser mysql_escape_string pour protéger les données que tu vas envoyer à MySQL.

Ta construction de if est louche par contre.
Tu lances l'update SQL quoi qu'il arrive (je ne pense pas que ce soit voulu).
Et si tu rentres dans le else, ben $table n'existe pas, or tu l'utilises dans ta requete.
Utilise des { } pour délimiter tes if, et dans le cas du else, bloque l'éxection d'une facon ou d'une autre pour ne pas faire la requête (exit, header ou bien declarer une variable $erreur, et tu lances l'update que si $erreur n'existe pas, etc.).
hartek
le 26/03/2009 à 14:06
hartek
Oula, plein de petit trucs à revoir smiley
je regarde et je te dis ca

merci
hartek
le 26/03/2009 à 14:17
hartek
pff, rien y fait j'ai toujours le même message.

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 'fevrier WHERE ID='0'' at line 1
LA GLOBULE
le 26/03/2009 à 14:21
LA GLOBULE
Fais un echo de "UPDATE ".$table." SET date = '".mysql_escape_string($_POST['nouvelleDate'])."' WHERE ID='0'"; pour voir la tronche de ta requête.
hartek
le 26/03/2009 à 14:25
hartek
Ca me donne ça:

UPDATE structurelle SET date = '11 fevrier' WHERE ID='0'
hartek
le 27/03/2009 à 06:49
hartek
Bah, je comprends pas!!

Si je met des chiffres pas de problème.
Mais si je met des chiffres et des lettres, j'ai le message suivant:

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 'octobre WHERE ID='0'' at line 1
LA GLOBULE
le 27/03/2009 à 07:57
LA GLOBULE
Et ton champ date est de quel type ? varchar ? ou date ?

Si il est de type date, tu dois entrer une vraie date (genre YYYY-MM-DD ou YYYY-MM-DD HH:MN:SS si tu as un datetime).
hartek
le 27/03/2009 à 08:17
hartek
bon j'ai reglé ce problème, car au début j'avais un input pour mettre le jour (nombre), le mois (lettre) et l'année (nombre).
J'ai remplacé par un input à chacun.

Mais là j'ai un autre problème qui est:
j'ai un textarea ou je doit rentrer plusieurs lignes mais voilà j'ai ça:
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 'WHERE ID='0'' at line 1

Et autre chose j'ai rentré les données depuis phpadmin et quand j'ouvre ma page, j'ai des trucs bizarre à la place des "é" "ô" et les retours à la ligne ne sont respectés. smiley

Comment faire stp
Répondre
LoadingChargement en cours