Prolbème mysql, fonction UPDATE

Résolu/Fermé
cradl Messages postés 17 Date d'inscription samedi 15 septembre 2007 Statut Membre Dernière intervention 28 août 2009 - 15 sept. 2007 à 19:57
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 15 sept. 2007 à 23:14
bonsoir,
j'ais un petit problème avec mon site (mais ca je parie que vous vous en doutiez ;) )

en fait mon problème réside dans cette partie de mon code :


$NewsId = $_GET["NewsId"];
$NomNews = $_POST["NomNews"];
$Date = date("d-m-Y");
$DescriptionNews = addslashes($_POST['DescNews']);

$sql="UPDATE News SET titre='$NomNews', desc='$DescriptionNews', date='$Date' WHERE id='$NewsId'";
mysql_query($sql) or die ('Erreur : '.mysql_error() );


apparement le problème viendrais de ce morceaux :
desc='$DescriptionNews'
(**situé dans la requete sql**)

J'ais évidemment vérifié si les variables étaient bien transmises, et oui elle le sont ...
le $DescriptionNews viens, comme vous l'avez sans doute remarqué, d'un formulaire.

aussi, cela ne marche non plus pas si j'enleve le addslashes (que j'avais mis pour permettre de mettre des ' dans le texte)


Sachant, que j'utilise php5, quelqu'un pourrais me dire d'ou viens le problème ?
merci d'avance ^_^



ps : svp aidez-moi, ca fait quasiment 2 heures que je m'arrache les cheuveux la dessus :(
ps2 : j'ais regardé quelques sujets similaires sur le forum, mais aucun ne m'as l'air de marcher :s
A voir également:

9 réponses

cradl Messages postés 17 Date d'inscription samedi 15 septembre 2007 Statut Membre Dernière intervention 28 août 2009 4
15 sept. 2007 à 20:37
ah mine désolé j'ais oublié le message d'erreur :s
(quel con je fait par moment ..)

le voila :
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 'desc='zdad', date='15-09-2007' WHERE id='5'' at line 1

donc j'avais pensé que ca viendrais du sql, mais bon normalement la syntaxe m'avais l'air bonne (vu que je l'ais copié depuis d'autre sites ou c'étais censé marcher parfaitement)
apparement ca ne viens pas du mot date (je l'ais changé et cela me donne toujours la meme erreur)


ps : svp aidez-moi, ca fait quasiment 2 heures que je m'arrache les cheuveux la dessus :(
>c'est sensé nous donner envie de te répondre ?

nope, c'étais juste pour expliquer la raison que j'ais pour me permettre de vous déranger !
1
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
15 sept. 2007 à 20:28
salut,

il pourrait venir d'à côté ton problème.
"date" est un mot réservé de beaucoup de langages, dont SQL me semble-t-il.

donnes nous le message d'erreur complet stp, on ne sait même pas si c'est PHP ou MySQL qui l'a levée.

ps : svp aidez-moi, ca fait quasiment 2 heures que je m'arrache les cheuveux la dessus :(
c'est sensé nous donner envie de te répondre ?
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
15 sept. 2007 à 21:16
en premier, modifie le nom de ton champ "date" ce sera plus propre, à mon avis !

es-tu sûr d'avoir une valeur dans "$_POST['DescNews']" ?

c'est une erreur SQL, donc ta requête est erronée.
au lieu d'exécuter la requête, imprime là et regarde ce qu'elle contient.
$sql="UPDATE News SET titre='$NomNews', desc='$DescriptionNews', date='$Date' WHERE id='$NewsId'";
//mysql_query($sql) or die ('Erreur : '.mysql_error() ); 
echo $sql;


tu ne teste pas le contenu de ton 'POST', ce n'est pas prudent du tout, ni pour la stabilité de ton code, ni contre les attaques.

nope, c'étais juste pour expliquer la raison que j'ais pour me permettre de vous déranger !
mais non !!! faut pas hésiter !!!
faut nous déranger sinon on va être tout poussiéreux sans questions !!!
-;o)
0
cradl Messages postés 17 Date d'inscription samedi 15 septembre 2007 Statut Membre Dernière intervention 28 août 2009 4
15 sept. 2007 à 21:33
en premier, modifie le nom de ton champ "date" ce sera plus propre, à mon avis !
je l'ais directement fait après ton premier post, je n'avais pas pensé que ca pouvait etre un mot reservé ;)

es-tu sûr d'avoir une valeur dans "$_POST['DescNews']" ?
normalement ouais :s
(j'avais déja verifié chaque variable pour vérifier si elle étaient vides ou pas, mais je ne les ais pas copiés, pour éviter d'avoir un trop long code qui ne contiens que des echo, mais bon je vais tout de meme revérifier tout ca ;) )

tu ne teste pas le contenu de ton 'POST', ce n'est pas prudent du tout, ni pour la stabilité de ton code, ni contre les attaques.
ouais je sait mais bon, ca reste un site assez bidon pour l'instant et inconnu pour tout le monde, donc au pire si je perds ma base de donnée je vais pas perdre grand chose ;-)

(enfin bon, c'est surtout que je ne sais pas comment faire ^^' )


mais non !!! faut pas hésiter !!!
faut nous déranger sinon on va être tout poussiéreux sans questions !!!
-;o)

je m'en doutes,
mais bon souvent je préfere chercher les solutions par moi-même, ca aide mieux a se rapeller de la solution ! ;-)


EDIT après test :
voila ce que sort ma requete sql :
UPDATE News SET titre='test', desc='testeuh', dateEnreg='15-09-2007' WHERE id='5'

je remets la requete que j'ais dans ma page php :
$sql="UPDATE News SET titre='$NomNews', desc='$DescriptionNews', dateEnreg='$DateA' WHERE id='$NewsId'";

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
15 sept. 2007 à 22:14
the right syntax to use near 'desc='zdad', date='15-09-2007' WHERE id='5''
c'est quand même pas parce qu'il veut son point virgule à la fin ?!
$sql="UPDATE News SET titre='$NomNews', desc='$DescriptionNews', dateEnreg='$DateA' WHERE id='$NewsId';";

0
cradl Messages postés 17 Date d'inscription samedi 15 septembre 2007 Statut Membre Dernière intervention 28 août 2009 4
15 sept. 2007 à 22:23
je viens de test, et c'est pas ca :(

je vois vraiment pas ce que ca peut etre ! :s
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
15 sept. 2007 à 22:34
pour 'date'

prends la valeur retournée par '$sql' et essaie dans phpMyAdmin (ou équivalant)…

sinon 'dateEnreg' est un champ de quel type ?
si c'est 'datetime' il lui faut le bon format (mais l'erreur n'est pas à ce niveau de la requête…).
0
cradl Messages postés 17 Date d'inscription samedi 15 septembre 2007 Statut Membre Dernière intervention 28 août 2009 4
15 sept. 2007 à 22:47
ah ouais t'avais raison pour date ^^'
(bizare que ca passait quand je faisait un ajout de champ dans la base, enfin bon ^^')

perso j'avais mis le champ dateEnreg de type text (de toute facon je ne fais pas d'opérations dessus)


mais par contre le lien que tu as donné m'as fait penser a autre chose, le mot 'desc' est aussi réservé, voila pour je ne pouvais pas enregister, en changeant le nom de ce champ ca marche niquel ;o)

(ce qui m'y as aussi fait penser, c'est le fait de mettre la requete dans mysql, vu qu'il mets en majuscule les mots reservés :o) )


encore merci pour ca,
(eh oui, c'étais encore une erreur a la con :( )
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
15 sept. 2007 à 23:14
content pour toi !
vu qu'il mets en majuscule les mots reservés
pas c** ça !!!
j'y avais même pas pensé !
-;o)
0