[RESOLU] Problème update bdd

Eléphanteau du PHP | 17 Messages

29 déc. 2021, 11:55

Bonjour, Bonsoir
Je réalise un site et j'en suis à la page d'édition des profils. Mon soucis est que j'ai réalisé mon code en partant d'un que j'avais utilisé y a biiiien longtemps et qui fonctionnait mais qui était limité dans les actions (ne vérifier pas si le nouveau pseudo est déjà existant, de même pour le mail) et un autre gros soucis était que l'ancien code effectuait les mises à jour dans la base de données dès qu'au moins le pseudo ou le mail était changé mais ne prenait pas en compte la condition que j'avais mise pour tester si le nouveau mdp avec le mdp de confirmation sont identiques.
Voilà le code que j'utilise actuellement, il n'y a pas d'erreur lors de l'exécution mais ma bdd reste inchangée.
<?php
session_start();
	 
include("pdo.php");
	 
if(isset($_SESSION['id'])) {
   $requser = $bdd->prepare("SELECT * FROM membres WHERE id = ?");
   $requser->execute(array($_SESSION['id']));
   $user = $requser->fetch();
   if(isset($_POST['newpseudo']) AND !empty($_POST['newpseudo']) AND $_POST['newpseudo'] != $user['pseudo'])
   {
      	$newpseudo = htmlspecialchars($_POST['newpseudo']);
   		if(isset($_POST['newmail']) AND !empty($_POST['newmail']) AND $_POST['newmail'] != $user['mail'])
   		{
     	 	$newmail = htmlspecialchars($_POST['newmail']);
   			if(isset($_POST['newmdp1']) AND !empty($_POST['newmdp1']) AND isset($_POST['newmdp2']) AND !empty($_POST['newmdp2']))
   			{
			    $mdp1 = sha1($_POST['newmdp1']);
			    $mdp2 = sha1($_POST['newmdp2']);
				$reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
                $reqmail->execute(array($mail));
                $mailexist = $reqmail->rowCount();

				$reqpseudo = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ?");
				$reqpseudo->execute(array($pseudo));
				$pseudoexist = $reqpseudo->rowCount();
				if($pseudoexist == 0){                             
	                if($mailexist == 0){  
						if($mdp1 == $mdp2)
		     			{
						    $insertpseudo = $bdd->prepare("UPDATE membres SET pseudo = ? WHERE id = ?");
						    $insertpseudo->execute(array($newpseudo, $_SESSION['id']));
						    $insertmail = $bdd->prepare("UPDATE membres SET mail = ? WHERE id = ?");
					        $insertmail->execute(array($newmail, $_SESSION['id']));
			   		        $insertmdp = $bdd->prepare("UPDATE membres SET motdepasse = ? WHERE id = ?");
							$insertmdp->execute(array($mdp1, $_SESSION['id']));
							header('Location: profil.php?id='.$_SESSION['id']);
		     			}else
		     			{
			        		$msg = "Vos deux mdp ne correspondent pas !";
		     			}
		     		}else
		     		{
		     			$msg = "Ce mail est déjà utilisé !";
		     		}
		     	}else
		     	{
		     		$msg = "Ce pseudo est déjà utilisé !";
		     	}
   			}
   		}
   }
}
?>



Avatar du membre
Mammouth du PHP | 1564 Messages

29 déc. 2021, 12:46

Il te faut débuguer, voir jusqu'où tu arrive dans tes conditions, mettre un echo "ici1", echo "ici2" et éventuellement afficher les erreurs PHP à l'écran.

Eléphanteau du PHP | 17 Messages

29 déc. 2021, 13:31

Le code n'exécute que jusqu'à la 3ème condition et cela si seulement je modifie ET le pseudo ET le mail. Si je modifie le pseudo il va à la deuxième condition mais si je modifie autre chose que le pseudo il reste à la toute première condition.