Impossible de faire comprendre qu'un mail existe déjà

Résolu
MisterGameFR Messages postés 171 Statut Membre -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je suis en train de faire un espace membre, je suis actuellement en train de travailler sur le formulaire d'inscription (je suis débutant désoler) et je n'arrive pas à faire comprendre à ma base de donné que le mail existe déjà.. une solution ?

VOICI MON CODE:


if(filter_var($mail, FILTER_VALIDATE_EMAIL))
			{

				$reqmail = $bdd->prepare('SELECT * FROM membres WHERE mail = ? '); 
				$reqmail->execute(array($mail));
				$mailexist = $reqmail->rowCount(); 

				if($mailexist == 0)
				{
				if($mail == $mail2)
				{
					if($mdp == $mdp2)
					{
						$insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)");
						$insertmbr->execute(array($pseudo, $mail, $mdp));
						$erreur ="Votre compte à bien été créer, BIENVENUE ! ";
					}
					else
					{
						$erreur ="Vos mot de passe ne correpondent pas"; 
					}
				}
				else
				{
					$erreur ="Adresse mail déjà utilisée";
				}



Merci d'avance de vos réponses.
DLT

2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    1 - Attention... il semble manquer des accolades fermantes pour certains de tes if.

    2 - L'utilisation de rowcount n'est pas conseillée (voir la notice ! )

    3 - Voici le code corrigé (normalement :-) )

    if(filter_var($mail, FILTER_VALIDATE_EMAIL)){
    
       $reqmail = $bdd->prepare('SELECT * FROM membres WHERE mail = :mail '); 
       $reqmail->execute(array(':mail'=>$mail));
       $arr_mail = $reqmail->fetchAll(); 
       $mailexist = count($arr_mail)>0 ? true : false;
          if(!$mailexist)	{
             if($mail == $mail2)	{
                if($mdp == $mdp2)	{
                   $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)");
                   $insertmbr->execute(array($pseudo, $mail, $mdp));
                   $erreur ="Votre compte à bien été créer, BIENVENUE ! ";
                }else{
                   $erreur ="Vos mot de passe ne correpondent pas"; 
                }
             }
       }else{
          $erreur ="Adresse mail déjà utilisée";
       }
    }
    


    PS: Tu constateras que j'écris les IF ELSE de la façon suivante :
    
     if(condition){
    
    }else{
    
    
    }
    


    ... en fait, je m'inspire de la norme d'écriture PSR2
    http://www.php-fig.org/psr/psr-2/fr/

    Ca rend le code plus lisible.

    0
    1. MisterGameFR Messages postés 171 Statut Membre
       
      
      <?php
      
      $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
      
      if(isset($_POST['forminscription']))
      	{
      		$pseudo = htmlspecialchars($_POST['pseudo']);
      		$mail = htmlspecialchars($_POST['mail']);
      		$mail2 = htmlspecialchars($_POST['mail2']);
      		$mdp = sha1($_POST['mdp']); 
      		$mdp2 = sha1($_POST['mdp2']);
      
      		if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']))
      		{ 
      
      			$pseudolenght = strlen($pseudo);
      			if($pseudolenght <= 255)
      			{
      
      			if(filter_var($mail, FILTER_VALIDATE_EMAIL)){
      
         				$reqmail = $bdd->prepare('SELECT * FROM membres WHERE mail = :mail '); 
         				$reqmail->execute(array(':mail'=>$mail));
         				$arr_mail = $reqmail->fetchAll(); 
         				$mailexist = count($arr_mail)>0 ? true : false;
      
      				if(!$mailexist)	{
               if($mail == $mail2)	{
                  if($mdp == $mdp2)	{
                     $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)");
                     $insertmbr->execute(array($pseudo, $mail, $mdp));
                     $erreur ="Votre compte à bien été créer, BIENVENUE ! ";
                  	}else{
                     		$erreur ="Vos mot de passe ne correpondent pas"; 
                  	}
              		
         				}else{
           				$erreur ="Adresse mail déjà utilisée";
        				}
      				}
      				else
      				{
      					$erreur ="Votre adresse mail n'est pas valide"; 
      				}
      
      				}
      				else
      				{
      					$erreur ="Vos adresses mail ne correspondent pas"; 
      				}
      			}
      			else
      			{
      				$erreur ="Votre pseudo ne dois pas dépsser 255 caractères";
      			}
      		}
      		else
      		{
      			$erreur = " Tous les champs doivent être complétés";
      		}
      		
      	}
      
      ?>
      
      


      J'ai essayé votre code mais cela ne change absolument rien .. Je vous envoie le code complet.
      0
    2. MisterGameFR Messages postés 171 Statut Membre
       
      Je viens de trouver ..

      Le problème venais du mot MEMBRES à la ligne 26 et 36 qui ne prend pas de S.

      Merci de ton aide, si tu veux m'aidez pour m'organiser dans mes codes, je suis preneur :D
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > MisterGameFR Messages postés 171 Statut Membre
         
        Dans l'idéal... il serait bien que tu travailles avec des CLASSES.
        Par exemple, une CLASS Membres dans laquelle tu mettrais tes fonctions d'ajout/suppression/Edition/ recherche...
        0