Double condition

Résolu
papyclic Messages postés 451 Statut Membre -  
papyclic Messages postés 451 Statut Membre -
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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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
  2. papyclic Messages postés 451 Statut Membre 3
     
    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. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      } 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
  3. papyclic Messages postés 451 Statut Membre 3
     
    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. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      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
  4. papyclic Messages postés 451 Statut Membre 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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. papyclic Messages postés 451 Statut Membre 3
     
    Bonjour
    Merci, je n'ai pas suffisamment réfléchi excuse moi et encore un grand merci tout fonctionne bien.
    Bonne continuation.
    0