probleme UPDATE

Eléphant du PHP | 299 Messages

05 juil. 2009, 20:47

bonjour tout le monde,


j' ai un petit souci, j' ai deux page changepass.php qui contient un formulaire simple pour que l' utilisateur change de mot de passe avec deux champ : passe et passe2


et changepass2.php pour le traitement de la page:

Il ne se passe rien, meme pas un emssage d' erreur !
<?php
if(!empty($_POST['passe']))
{
//Je mets aussi certaines sécurités ici...
$passe = mysql_real_escape_string(htmlspecialchars($_POST['passe']));
$passe2 = mysql_real_escape_string(htmlspecialchars($_POST['passe2']));
if($passe == $passe2)
{
//Je vais crypter le mot de passe
$passe = sha1($passe);

mysql_query('UPDATE connexion SET passe VALUES '.$passe.' WHERE pseudo="' . $_SESSION['pseudo'] . '"') or die ('Erreur :'.mysql_error());


echo 'Vous avez changé votre mot de passe avec succés.';
}
 
else
{
echo 'Les 2 mots de passe que vous avez rentrés ne correspondent pas...';
}
}
?>
Merci d' avance



oula edit:


j' ai ceci :

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 'VALUES 403926033d001b5279df37cbbe5287b7c7c267fa WHERE pseudo="graffx"' at line 1

ViPHP
ViPHP | 2291 Messages

05 juil. 2009, 21:54

Bonsoir,
Ceci pour moi est un message d'erreur.
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 'VALUES 403926033d001b5279df37cbbe5287b7c7c267fa WHERE pseudo="graffx"' at line 1
Et en gros il te dis que ta syntaxe est mauvaise :wink:
et je te propose le correction suivante :
"UPDATE 
	connexion 
SET 
	passe = '".$passe."' 
	WHERE pseudo ='" . $_SESSION['pseudo'] . "'";
A+ :wink:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 juil. 2009, 22:46

Ce que dunbar oublie de t'expliquer, c'est que l'erreur vient du fait que la valeur textuelle $passe n'était pas encadré par des guillement dans la requête.

L'une des 1eres pratiques de débuggage à effectuer quand on a un soucis de SQL, est d'afficher la requête en question :
$query = 'UPDATE connexion SET passe VALUES '.$passe.' WHERE pseudo="' . $_SESSION['pseudo'] . '"';
echo $query; // <= Affichage de la requête générée
mysql_query($query) or die ('Erreur :'.mysql_error());
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 2291 Messages

05 juil. 2009, 22:51

Effectivement autant pour moi :cry:
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphant du PHP | 299 Messages

08 juil. 2009, 05:20

Effectivement j' avais faux pour la simple et bonne raison que je n' ai pas rajouter de variable a ma requete.


Je suis desolé, j' ai la tete en vrac, j me suis fait areté au boulot lundi aprés midi et hier soir j' ai failli finir aux urgences a causes de certains medocs que l' on m' avait prescrits et que j' ai utilisé un peu trop souvent pour soulager ma douleur, bref j' avais la réaction, la vue et la reflexion d' un gars qui a 6grammes dans le sang, et c' est pas des betises lol.


Je suis tellement shooté par mon traitement que je ne sais meme pas pourquoi je raconte ca :D


Alors merci et resolu :)