Double condition

Résolu
Bonjour

J'ai fait une méthode afin de vérifier 2 conditions, je ne sais pas pourquoi elle ne fonctionne pas.
En fait même avec un pseudo différent elle s'arrete à la boucle de "Pseudo déjà pris"
Je me demandais si vous pouviez m'aider, en vous remerciant d'avance.
	public function verif() {
		if(empty($this->pseudo) || empty($this->password)) {
			$erreur = 'Veuillez remplir tous les champs';
			return $erreur;
		} elseif ($this->pseudo == $this->pseudo) {
			$erreur = 'Ce Login existe déjà, veuillez en choisir un autre !';
			return $erreur;			
		} else {
			return 'success';
		}
	}

5 réponses

  1. Modérateur
    Bonjour,

    1 - N'hésites pas à faire des ECHO de tes variables pour savoir ce qu'elles contiennent et donc t'assurer qu'elles correspond à ce que tu attends..

    2 - dans ton ELSEIF .. tu test si Une variable....égale à cette même variable.. la réponse est donc toujours vrai !

    
    public function verif() {
    // le temps des test :
    $erreur  ="";
    $erreur  .= "<br> pseudo :".$this->pseudo;
    $erreur  .= "<br> password:".$this->password;
    
    		if(empty($this->pseudo) || empty($this->password)) {
    			$erreur .= 'Veuillez remplir tous les champs';
    			return $erreur;
                     /* la condition ci-dessous sera TOUJOURS vrai...
    		} elseif ($this->pseudo == $this->pseudo) {
    			$erreur .= 'Ce Login existe déjà, veuillez en choisir un autre !';
    			return $erreur;	
                     */		
    		} else {
    			return 'success';
    		}
    	}
    
    

    1
    1. Bonjour

      Merci de ta réponse, j'ai un peu du mal à saisir, j'ai essayé de mettre "> 0" ça devais marcher ça non?
      Si la ligne pseudo est plus grand que 0 alors erreur en principe.
      Et là l'enregistrement renvoi success.
      Je n'y comprend plus rien en fait.
      Tu peux me redire un peu s'il te plait.
      Je te remercie
      0
      1. Contributeur
        } elseif ($this->pseudo == $this->pseudo) {
        Autrement dit : if(1==1); il faut revoir cette condition.
        Comment souhaites-tu vérifier que le compte existe déjà (Où est stockée la liste des comptes existants ? Dans une base de données ? Dans un fichier texte ?)
        0
    2. Bonjour
      J'aéi une BDD phpmyadmin
      Comme ça l'enregistrement s'effectue même si le Login existe déjà dans ma BDD
      Merci de pouvoir m'aider un peu
      	public function verif() {		
      		if(empty($this->pseudo) || empty($this->password)) {
      			$erreur = 'Veuillez remplir tous les champs';
      			return $erreur;
      		} elseif ($this->pseudo > 0) {
      			$erreur = 'Ce Login existe déjà, veuillez en choisir un autre !';
      			return $erreur;			
      		} else {
      			return 'success';
      		}
      	}
      
      0
      1. Contributeur
        J'aéi une BDD phpmyadmin
        Comme ça l'enregistrement s'effectue même si le Login existe déjà dans ma BDD

        Ben vu ton code (ou plutôt les commentaires), j'ai l'impression que tu cherches à empêcher (return $erreur;) l'enregistrement si le login est dans la BDD...
        D'ailleurs, this->pseudo > 0, il n'y a aucun lien avec la BDD. Si tu veux vérifier que ce login n'est pas en BDD, il faut faire une requête SQL...
        0
    3. Bonjour
      En fait j'ai fait une requète je te montre la totalité, Merci de ton coup de main
      Voici la class Inscription
      <?php
      class Inscription_class {
      	
          private $pseudo;
          private $password;
      	
      	private $bdd;
      	
      	public function __construct($pseudo, $password) {
      		
      		$pseudo 	= Security::clean($pseudo);
      		$password 	= Security::clean($password);
      		
      		$this->pseudo = $pseudo;
      		$this->password = $password;
      		$this->bdd = bdd();
      	}
      	
      	public function verif() {		
      		if(empty($this->pseudo) || empty($this->password)) {
      			$erreur = 'Veuillez remplir tous les champs';
      			return $erreur;
      		} elseif ($this->pseudo > 0) {
      			$erreur = 'Ce Login existe déjà, veuillez en choisir un autre !';
      			return $erreur;			
      		} else {
      			return 'success';
      		}
      	}
      	
      	public function enregistrement() {
      		$requete = $this->bdd->prepare('INSERT INTO tb_inscription(pseudo, password) VALUES(:pseudo, :password)');
      		$requete->execute(array(
      						'pseudo' 	=> $this->pseudo,
      						'password' 	=> $this->password
      						));
      		return 'success';
      	}
      

      Voici la page du formulaire
      if(isset($_POST['pseudo']) AND isset($_POST['password'])) {
      	$inscription = new Inscription_class($_POST['pseudo'], $_POST['password']);
      	$verif = $inscription->verif();
      	
      	if($verif == 'success') {
      		if($inscription->enregistrement()) {
      			$erreur[] = 'L\'enregistrement s\'est bien effectué';
      		} else {
      			$erreur[] = 'Une erreur est survenue';
      		}
      	} else {
      		$erreur[] = $verif;
      	}
      }
      if (isset($erreur)) {
      	echo output_errors($erreur);
      }
      ?>
      
      <br/>
      <div id="ajout_user">
      	<form id="formulaire" action="" method="post">
              <fieldset>
                  <legend>Ajouter un membre</legend>
      <!--#######################################################################################################################################-->
      		<table cellpadding="0" cellspacing="3">
      			<tr>
      				<td width="20%"><img src="image/login.png" alt="Login" title="Login" height="22" width="22"/> Login :</td>
      				<td width="30%"><input name="pseudo" class="ajout_user" size="30" type="text" value=""/></td>
      				<td width="20%"><img src="image/password.png" alt="Mot de passe" title="Mot de passe" id="image_pwd" height="22" width="22"/> Mot de passe :</td>
      				<td width="30%"><input name="password" class="ajout_user" size="30" type="text" value=""/></td>
      			</tr>
      		</table>
      <!--#######################################################################################################################################-->
      
      			<input name="action" value="ajouter" type="hidden" />
      			<input type="submit" class="submit" value="Enregistrer"/>
              </fieldset>
      	</form>
      </div>
      
      0
      1. Modérateur
        Bonjour,

        Dans ta class il te manque une requête sql pour savoir si ton user existe déjà...

        public function verif() {  
        
                  $sql= "SELECT * FROM  tb_inscription
                   WHERE pseudo= '$this->pseudo'";
                   $requete = $this->bdd->prepare($sql
                    $requete->execute();
                    $result = $requete->fetchAll();
        
          if(empty($this->pseudo) || empty($this->password)) {
           $erreur = 'Veuillez remplir tous les champs';
           return $erreur;
          } elseif (count($result)>0) {
           $erreur = 'Ce Login existe déjà, veuillez en choisir un autre !';
           return $erreur;   
          } else {
           return 'success';
          }
         }
        
        0
    4. Bonjour
      Merci, je n'ai pas suffisamment réfléchi excuse moi et encore un grand merci tout fonctionne bien.
      Bonne continuation.
      0