Changer le mot de passe d'un membre

Fermé
louffy87 Messages postés 6 Date d'inscription dimanche 15 septembre 2013 Statut Membre Dernière intervention 8 avril 2018 - 15 sept. 2013 à 02:46
louffy87 Messages postés 6 Date d'inscription dimanche 15 septembre 2013 Statut Membre Dernière intervention 8 avril 2018 - 18 sept. 2013 à 15:36
Bonsoir, je bosse sur un code depuis presque un mois, je suis bientot à terme mais il se trouve que j'ai un soucis.
Dans le projet, un utilisateur dèja connecté aura la possibilité de changer son mot de passe s'il le désire. Mais j'ai une erreur au niveau de la ligne 40 de mon script :Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\loufproject\projet_de_licence\rh\change_passe_script.php on line 40

Mon code est le suivant
<body>
<?php
include 'header_rh.php';
?>
<h3>Modifer infos agent</h3>
<?php
//connection au serveur:
$cnx = mysql_connect( "localhost", "root", "" ) ;

//sélection de la base de données:
$db = mysql_select_db( "pers" ) ;

//récupération de la variable d'URL,
//qui va nous permettre de savoir quel enregistrement modifier
$id = $_GET["id"] ;

//requête SQL:
$sql = "SELECT *
FROM rh
WHERE id_rh = ".$id ;

//exécution de la requête:
$requete = mysql_query( $sql, $cnx ) ;

//affichage des données:
if( $result = mysql_fetch_object( $requete ) )
{
?>

<fieldset>
<form action="change_passe_script.php" method="post">
<input type="hidden" name="id" value="<?php echo($id) ;?>"><br>
<?php echo $_SESSION['login'];?><br>
<label>Renseigner votre ancien Password</label>
<input type="password" name="old_password" required><br>
<label>Nouveau Password</label>
<input type="password" name="new_password" required><br>
<label>Répétez le Password</label>
<input type="password" name="repeat_new_password" required><br>

<input type="submit" name="change_password" value="Changer">

</form>
<br><br><br><br><br><br><br>
</fieldset>
<?php
}
?>

<?php
include 'footer_rh.php';
?>
</body>


le script est :

<?php

include 'parametre.ini';

if (isset($_POST['change_password'])){
$old_password = $_POST['old_password'];
$old_password_crypte = sha1($old_password);

$new_password = $_POST['new_password'];
$new_password_crypte = sha1($new_password);

$repeat_new_password = $_POST['repeat_new_password'];
$repeat_new_password_crypte = sha1($repeat_new_password);

connecte(HOST, USER, PASSWORD);
use_db (DB);

$log = $_SESSION['login'];
$sql= " SELECT password_rh FROM rh WHERE login_rh ='$log' && password_rh= '$old_password_crypte' ";

$result = execute_query($sql);

$data= mysql_num_rows($result);

if($data==1){
if ($new_password == $repeat_new_password) {
connecte(HOST, USER, PASSWORD);
use_db (DB);

$modif = "UPDATE rh SET password_rh = '$new_password_crypte'
WHERE login_rh = $log";

$result_modif = mysql_query($modif) ;

$data_modif = mysql_num_rows($result_modif); // c'est ici que j'ai l'erreur

if ($data_modif == 1) {
echo 'Bien';
}

}
else {?>
<script>
alert('Les deux mots de passe doivent être identiques!!!');
document.location.href = "index.php";
</script>
<?php }
}
else {
?>
<script>
alert('Le mot de passe saisie n\'est pas le bon.\n\
Veuillez reassayer SVP.');
document.location.href = "index.php";

</script>
<?php }

}
?>

merci de votre aide
A voir également:

2 réponses

gign44 Messages postés 124 Date d'inscription dimanche 27 janvier 2008 Statut Membre Dernière intervention 22 octobre 2013 5
16 sept. 2013 à 12:22
Bonjour,

etant donné que mysql_num_rows n'agit que sur les SELECT, ("compte le nb de ligne retournées),
cette fonction ne peut pas agir ici sur ton Update.
Utilise cette fonction : mysql_affected_rows().

Sinon, sache que mysql_query($requete) retourne un booléen à l'execution de la requete.
Donc tu peux simplement faire ça au moment de l'execution :


if(mysql_query($modif)===true){
echo "BIEN !";
}

Cordialement
0
louffy87 Messages postés 6 Date d'inscription dimanche 15 septembre 2013 Statut Membre Dernière intervention 8 avril 2018
16 sept. 2013 à 23:33
Bonsoir,
Merci gign44, j'ai essayé les deux solutions que tu m'as proposé, mais sa ne marche pas. Le premier j'ai la mm erreur qu'avec mysql_num_rows, et le second donne en resultat une page blanche
CDT
0
gign44 Messages postés 124 Date d'inscription dimanche 27 janvier 2008 Statut Membre Dernière intervention 22 octobre 2013 5
17 sept. 2013 à 10:06
Remplace ton bout de code de ta requete et ton if par celui-ci pour voir :

$data_modif = mysql_num_rows($result_modif); // c'est ici que j'ai l'erreur

if (mysql_affected_rows()!=0) {
echo "Bien";
echo "Lignes affectees : ".mysql_affected_rows();
}
else{
echo "Update FAIL";
}

Cordialement
0
gign44 Messages postés 124 Date d'inscription dimanche 27 janvier 2008 Statut Membre Dernière intervention 22 octobre 2013 5
17 sept. 2013 à 17:06
Sans la premiere ligne bien sur, erreur de copié coller de ma part ;)
0
louffy87 Messages postés 6 Date d'inscription dimanche 15 septembre 2013 Statut Membre Dernière intervention 8 avril 2018
18 sept. 2013 à 15:36
Merci Gign44 sa me redonne la même erreur sauf que sa y ajoute BienLignes affectees : -1
0