Double condition

Résolu
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   -  
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   -
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';
		}
	}
A voir également:

5 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
} 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
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
papyclic Messages postés 446 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour
Merci, je n'ai pas suffisamment réfléchi excuse moi et encore un grand merci tout fonctionne bien.
Bonne continuation.
0