Page 1 sur 1

Erreur dans mon formulaire

Posté : 12 févr. 2016, 14:54
par VectorX
Salut, alors voilà j'ai fait ce code mais le problème c'est que quand je veux vérifier si l'email entré par l'utilsateur existe déjà dans ma base de données l'inscription ne se déroule pas effectivement mais il n'affiche pas mon message d'erreur contrairement aux autres cas.
Vous pouvez tester le code pour me dire où j'ai fait l'erreur merci d'avance.

Code : Tout sélectionner

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>Inscription</title> </head> <body align="center"> <h2>Inscription</h2> <br /> <form method="POST"> <table align="center"> <tr> <td align="right"> <label for="pseudo" >Pseudo :</label> </td> <td> <input type="text" placeholder="Votre pseudo" id="pseudo" name="pseudo" value="<?php if(isset($pseudo)) { echo $pseudo; } ?>" /> </td> </tr> <tr> <td align="right"> <label for="mail">Mail :</label> </td> <td> <input type="email" placeholder="Votre mail" id="mail" name="mail" value="<?php if(isset($mail)) { echo $mail; } ?>" /> </td> </tr> <tr> <td align="right"> <label for="mail2">Confirmation du mail :</label> </td> <td> <input type="email" placeholder="Confirmez votre mail" id="mail2" name="mail2" value="<?php if(isset($mail2)) { echo $mail2; } ?>" /> </td> </tr> <tr> <td align="right"> <label for="mdp">Mot de passe :</label> </td> <td> <input type="password" placeholder="Votre mot de passe" id="mdp" name="mdp" /> </td> </tr> <tr> <td align="right"> <label for="mdp2">Confirmation du mot de passe :</label> </td> <td> <input type="password" placeholder="Confirmez votre mdp" id="mdp2" name="mdp2" /> </td> </tr> <tr> <td></td> <td align="center"> <br /> <input type="submit" name="register" value="Je m'inscris" /> </td> </tr> </table> <?php $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membres', 'root', ''); //Connexion a la bdd. if(isset($_POST['register'])) { $pseudo = htmlspecialchars(trim($_POST['pseudo'])); // Votre pseudo $mail = htmlspecialchars(trim($_POST['mail'])); // Votre email $mail2 = htmlspecialchars(trim($_POST['mail2'])); // Confirmation $mdp = sha1($_POST['mdp']);// MDP $mdp2 = sha1($_POST['mdp2']);// Confirmation if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) // Check if all fields are full { $pseudolength = strlen($pseudo); if($pseudolength <= 25) { // Pseudo less than 25 characters. if($mail == $mail2) // If the mail entered matches the confirmation { if(filter_var($mail, FILTER_VALIDATE_EMAIL)) { $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?"); // Checks if the mail doesnt exist already in the database $reqmail->execute(array($mail)); $mailexist = $reqmail->rowCount(); if($mailexist == 0) // If the mail already exists { if($mdp == $mdp2) // If the mdp entered matches the confirmation { $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)"); // Write in the database $insertmbr->execute(array($pseudo, $mail, $mdp)); } else // error_get_last(oid) $erreur = "Vos mots de passes ne correspondent pas !"; } } else { $erreur = "Adresse mail déjà utilisée !"; } } else { $erreur = "Votre adresse mail n'est pas valide !"; } } else { $erreur = "Vos adresses mail ne correspondent pas !"; } } else { $erreur = "Votre pseudo ne doit pas dépasser 255 caractères !"; } } else { $erreur = "Tous les champs doivent être complétés !"; } if(isset($erreur)) { echo $erreur; } else echo "Félicitiations ! Vous êtes maintenant inscrit" ?> </form> </body> </html>

Re: Erreur dans mon formulaire

Posté : 12 févr. 2016, 15:00
par Spols
affiche $mailexist juste après l'avoir rempli pour voir si le type de variable et le contenu correspond bien à ce que veux

PS Pour une lecture plus aisé du code, j'aurais inversé les condition if, les messages d'erreur sont ainsi plus facile à reliè vaec la condition
Si tous n'est pas rempli
erreur = Il faut tout remplir
sinon
si mail != mail2
mail qui correspond pas
sinon ...

PS 2 l'erreur du nombre de carctère du pseudo ne correspond pas à la condition 255 <> 25

Re: Erreur dans mon formulaire

Posté : 12 févr. 2016, 15:36
par ynx
Salut,

La fonction PDOStatement::rowCount() ne peut être utilisée que pour les requête INSERT, UPDATE ou DELETE pour récupérer le nombre de lignes affectées par ces requêtes.
Pour récupérer le nombre de résultat d'une requête SELECT, le plus simple est d'utiliser la fonction sql COUNT dans la clause SELECT de la requête. Tu peux voir un exemple dans la documentation de la fonction rowCount() justement : http://php.net/manual/fr/pdostatement.r ... ample-1064

Bonne journée