Fonction PHP pour déclarer une erreur si Email déjà utilisé PDO
vivian
-
Kuartz Messages postés 852 Date d'inscription Statut Membre Dernière intervention -
Kuartz Messages postés 852 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je voudrais ecrire une fonction pour lors de l'inscription d'un utilisateur si l'email est deja utilisé, une erreur lui soit déclaré tout sela en PDO, svp.
Voila mon code:
function Email_existe($Email)
{
try{
$bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', ' ');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
die('Erreur : ' . $e->getMessage());
}
$reponse = $bdd->prepare("SELECT COUNT(id) FROM utilisateurss WHERE Email='$Email'");
$reponse->execute(array($Email));
}
Je vous remercie d'avance
Je voudrais ecrire une fonction pour lors de l'inscription d'un utilisateur si l'email est deja utilisé, une erreur lui soit déclaré tout sela en PDO, svp.
Voila mon code:
function Email_existe($Email)
{
try{
$bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', ' ');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
die('Erreur : ' . $e->getMessage());
}
$reponse = $bdd->prepare("SELECT COUNT(id) FROM utilisateurss WHERE Email='$Email'");
$reponse->execute(array($Email));
}
Je vous remercie d'avance
1 réponse
-
Bonjour,
Un code comme celui-ci devrait convenir :
function Email_existe($email) { try { $bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', ' '); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch (PDOException $e) { die('Erreur : ' . $e->getMessage()); } $req = $bdd->prepare("SELECT COUNT(*) FROM utilisateurss WHERE Email = :email"); //Inutile de préparer la requête si c'est pour ne pas bind ensuite ! $req->execute(array( 'email' => $email //Ici on bind )); $results = $req->fetch(); //On fetch la requête $req->closeCursor(); //On ferme la connexion BDD, ça évite les soucis if($results[0] == 0) { return false; //L'email n'existe pas, on peut créer l'utilisateur } else { return true; //L'email existe, il ne faudra pas créer l'utilisateur } }
Cordialement.-
Merci. J'ai essayer mais lors de l'inscription elle ne signale pas l'email. L'inscription est accepter quand même ?
- 2 solutions :
- Ou ta fonction inclut déjà un echo :
Donc à la place de return true ou return false, tu peux écrire :
echo "L'email est déjà utilisé" ou bien echo "L'email a bien été enregistré".
- Ou ta fonction est booléenne, elle ne retournera que vrai ou faux :
La fonction telle que te l'ai donné. Dans ce cas, tu peux utiliser ta fonction comme ceci :
if (isset($_POST['leNameDeTonInputPourLAdresseMail'])) { if(Email_existe($_POST['leNameDeTonInputPourLAdresseMail'])) { echo "L'e-mail renseigné existe déjà"; } else { echo "Votre compte a bien été enregsitré. Merci."; } }
Cordialement.
-
-