[PHP/SQL] Cellule identique à celle de la bdd

Résolu/Fermé
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 - Modifié par MastercroW le 30/10/2010 à 15:33
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 - 31 oct. 2010 à 00:46
Bonjour,
Je n'ai pas trouvé beaucoup de choses sur le net, donc je viens poser ma question ici.
Alors voilà j'ai un formulaire avec tout ce qu'il faut pour changé une cellule dans ma table (modification pour changer d'e-mail)
Tout se passe comme il faut, mais à ce formulaire j'ai joins un champs "password" pour vérifier qu'il connaît bien son mot de passe !

Donc la question, comment fait-t'on pour vérifier que la cellule est identique à celle de la base de donnée ?




7 réponses

Bonjour,

Admettons 2 champs de formulaire nommés email et passe.
Après le post du formulaire tu vérifies dans la table que le mot de passe existe. Si il existe, tu update le champ email associé au mot de passe, dans le cas contraire (mot de passe inexistant dans la table) tu n'update pas le champ email.
Voilà en résumé ce que ton script est censé réaliser...
@+
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
30 oct. 2010 à 16:14
Et sa donne quoi niveau codage en PHP ?
0
HTML :
Email <imut type="text" name="email" value="" />
Mot de passe <input type="password" name="passe" value="" />

Script PHP :
$query = mysql_query("SELECT FROM table WHERE mdp=".$_POST['passe']);
if(mysql_num_rows($query) != 0) {
	mysql_query("UPDATE table SET email=".$_POST['email']." WHERE mdp=".$_POST['passe']);
} else {
	echo "Aïe ! Le mot de passe n'est pas valable.";
}
mysql_free_result($query);
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
30 oct. 2010 à 16:47
Merci de ta réponse j'ai fait quelques modifications mais ça ne marche pas.

$newEmail = mysql_real_escape_string(htmlspecialchars(trim($_POST['newEmail']) ) );

$newEmailVerify = mysql_real_escape_string(htmlspecialchars(trim($_POST['newEmailVerify']) ) );

$password = mysql_real_escape_string(htmlspecialchars(trim($_POST['password']) ) )


$query = mysql_query("SELECT FROM account_db WHERE Password = '$password' ");
if(mysql_num_rows($query) != 0) {
	mysql_query("UPDATE account_db SET Email= '$newEmail' WHERE Password = '$password'");
} else {
	echo "Aïe ! Le mot de passe n'est pas valable.";
}
mysql_free_result($query);
0
Peut-être que tes requêtes ont des erreurs de syntaxe. En captant l'erreur d'une requête avec mysql_error(), tu devrais pouvoir corriger.
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
30 oct. 2010 à 17:49
Il y a aucun erreur de syntaxe, si tu veux rien ne s'affiche.
0
$query = mysql_query("SELECT FROM account_db WHERE Password='".$password."'")or die(mysql_error());
if(mysql_num_rows($query) != 0) {
	mysql_query("UPDATE account_db SET Email='".$newEmail."' WHERE Password='".$password."'")or die(mysql_error());
} else {
	echo "Aïe ! Le mot de passe n'est pas valable.";
}
0

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

Posez votre question
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
30 oct. 2010 à 20:38
Problème niveau SQL syntaxe :
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 account_db WHERE Password='481'' at line 1
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
Modifié par MastercroW le 30/10/2010 à 20:44
Aussi j'oubli, il y avait un problème avec le CSS pour ça rien ne s'affichait. Mais bon voici le code d'erreur (et la source)
$query = mysql_query("SELECT FROM account_db WHERE Password = '$password' ");  
if(mysql_num_rows($query) != 0) {  
 mysql_query("UPDATE account_db SET Email= '$newEmail' WHERE Password = '$password'");  
} else {  
 echo "Aïe ! Le mot de passe n'est pas valable.";  
}  
mysql_free_result($query);  


Ligne 194 : if(mysql_num_rows($query) != 0) {
Ligne 199 : mysql_free_result($query);

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in changEmail.php on line 194  
Aïe ! Le mot de passe n'est pas valable.  
Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in changEmail.php on line 199
0
Ce code fonctionne (testé avec une table nommée account_db et 3 champs id, Password et Email)
$query = mysql_query("SELECT Password FROM account_db WHERE Password='".$password."'")or die(mysql_error());
if(mysql_num_rows($query) != 0) {
	mysql_query("UPDATE account_db SET Email='".$newEmail."' WHERE Password='".$password."'")or die(mysql_error());
} else {
	echo "Aïe ! Le mot de passe n'est pas valable.";
}

L'update de l'email s'effectue correctement lorsque le mot de passe a été trouvé dans la table.
Bonne continuation...
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
31 oct. 2010 à 00:46
Ok donc merci je vais voir ce que je peux faire x)
0