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

Résolu
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   -  
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   -
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

Twinpics
 
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 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
Et sa donne quoi niveau codage en PHP ?
0
Twinpics
 
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 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
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
Twinpics
 
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 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
Il y a aucun erreur de syntaxe, si tu veux rien ne s'affiche.
0
Twinpics
 
$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 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
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 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
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
Twinpics
 
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 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
Ok donc merci je vais voir ce que je peux faire x)
0