Double condition

Résolu/Fermé
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 20 déc. 2014 à 16:31
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 21 déc. 2014 à 17:30
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
20 déc. 2014 à 16:36
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 mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
20 déc. 2014 à 23:57
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
21 déc. 2014 à 09:33
} 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 mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
21 déc. 2014 à 09:57
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
21 déc. 2014 à 10:07
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 mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
21 déc. 2014 à 11:31
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 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié par jordane45 le 21/12/2014 à 19:15
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 mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
21 déc. 2014 à 17:30
Bonjour
Merci, je n'ai pas suffisamment réfléchi excuse moi et encore un grand merci tout fonctionne bien.
Bonne continuation.
0