Double condition
Résolu
papyclic
Messages postés
451
Statut
Membre
-
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.
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
-
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'; } }
-
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 -
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 peupublic 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'; } }-
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...
-
-
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 formulaireif(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>-
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'; } }
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour
Merci, je n'ai pas suffisamment réfléchi excuse moi et encore un grand merci tout fonctionne bien.
Bonne continuation.