Problème avec INSERT INTO

Suivre ce topic
Ce topic est suivi par : Personne...
Ce topic a été résolu
M69-74

M69-74 Le 9 avril 2016 à 22:40 (Édité le 25 janvier 2019 à 17:50)

Bonjour à tous,

J'ai créer l'espace membre en suivant le tuto de PrimFX, tout allait bien jusqu'à un beau jour, ou il y a eu des bugs : lorsque je remplie tout les champs de mon formulaire d'inscription, qu'il n'y a pas d'erreur, le message "Votre compte à bien été créer" s'affiche, mais il n'y a rien dans ma base de donnée...

Voici les codes :

Traitement du formulaire :
<?php
if(isset($_POST['forminscription'])) {
    $pseudo = htmlspecialchars($_POST['pseudo']);
    $mail = htmlspecialchars($_POST['mail']);
    $mail2 = htmlspecialchars($_POST['mail2']);
    $mdp = sha1($_POST['mdp']);
    $mdp2 = sha1($_POST['mdp2']);
    if(!empty($pseudo) AND !empty($mail) AND !empty($mail2) AND !empty($mdp) AND !empty($mdp2)) {
        $pseudolenght = strlen($pseudo);
        if($pseudolenght <= 70) {
            if($mail == $mail2) {
                if(filter_var($mail, FILTER_VALIDATE_EMAIL)) {
                    $reqmail = $bdd->prepare('SELECT * FROM membres WHERE mail = ?');
                    $reqmail->execute(array($mail));
                    $mailexist = $reqmail->rowCount();
                    $reqpseudo = $bdd->prepare('SELECT * FROM membres WHERE pseudo = ?');
                    $reqpseudo->execute(array($pseudo));
                    $pseudoexist = $reqpseudo->rowCount();
                    if($pseudoexist == 0) {
                        if($mailexist == 0 ) {
                            if($mdp == $mdp2) {
                                $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, mdp) VALUES('.$pseudo.', '.$mail.', '.$mdp.')");
                                $insertmbr->execute(array($pseudo, $mail, $mdp));
                                $valid = "Votre compte a bien été créer !";
                            } else {
                                $error = "Vos deux mots de passe ne correspondent pas !";
                            }
                        } else {
                            $error = "Cet adresse mail est déjà utilisée !";
                        }
                    } else {
                        $error = "Ce pseudo est déjà utilisé !";
                    }
                } else {
                    $error = "Votre adresse mail n'est pas valide !";
                }
            } else {
                $error = "Vos adresses mail ne correspondent pas !";
            }
        } else {
            $error = "Votre pseudo ne doit pas dépasser les 70 caractères !";
        }
    } else {
        $error = "Veuillez remplir tout les champs !";
    }
}
?>
index.php#overlay4 (fenêtre modale contenant mon formulaire) :
<div id="overlay4">
                                    
                                        <div class="popup_block">
                                            <a class="close" href="#noWhere"><img alt="Fermer" title="Fermer la fenêtre" class="btn_close" src="Hero_fichiers/close_pop.png"></a>
                                               <div class="header">
                                               
                                                 <h4>Inscription</h4>
                                             </div>
                                             <form method="POST" action="">
                                                 <input type="text" style="padding-right:160px;" placeholder="Pseudo" id="name" name="pseudo"><br /><br />
                                                 <input type="text" style="padding-right:160px;" placeholder="Adresse e-mail" id="name" name="mail"><br /><br />
                                                 <input type="text" style="padding-right:160px;" placeholder="Confirmation de l'email" id="name" name="mail2"><br /><br />
                                                 <input type="text" style="padding-right:160px;" placeholder="Mot de passe" name="mdp"><br /><br />
                                                 <input type="text" style="padding-right:160px;" placeholder="Confirmation du mdp" id="pass" name="mdp2"><br /><br />
                                                 <input type="submit" value="Je m'inscris !" name="forminscription">
                                             </form><br />
                                             <div style="color:red;" class="error">
                                                 <?php
                                                 if(isset($error)){
                                                     echo $error;
                                                 }
                                                 ?>
                                             </div>
                                             <div style="color:green;" class="valid">
                                                 <?php
                                                 if(isset($valid)){
                                                     echo $valid;
                                                 }
                                                 ?>
                                             </div>
                                        </div>
                                    </div>

                                    <li id="menu-item-140" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-140"><a href="#overlay4">Inscription</a></li>
Et un apercu de ma table(membres) placé dans la base de donnée  (nommée espace_membre) :


Merci par avance pour votre aide ! 😀
TheFlameflo

TheFlameflo Le 9 avril 2016 à 23:36

 $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, mdp) VALUES(?, ?, ?)");
Salut.
Remplace ta requête par celle que je t'ai donné.
Je crois que ça devrait être bon, à ce que je sais, si tu fais un prepare, tu ne devrais pas mettre tes variables directement dans ta requête.
Essaye avec ça, je crois que c'est la seule erreur que j'ai trouvé !
Profil introuvable

Profil introuvable Le 10 avril 2016 à 10:02

Il a raison dans VALUES met le nombre de points d'interrogation qui convient si tu veux rentrer 5 variables tu mets 5 points d'interrogation.
M69-74

M69-74 Le 10 avril 2016 à 10:45

Salut, j'ai fait ce que vous avez dit et ca ne marche pas ... Si ca peut aider, dans ma table membres, j'ai 7 colonnes... Merci par avance !
Profil introuvable

Profil introuvable Le 10 avril 2016 à 11:58

$insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, mdp) VALUES(?, ?, ?)");
$insertmbr->execute(array($pseudo, $mail, $mdp));
Tu as bien mis ca j'ai beau relire ton code, certe tu pourrais réduire ton code mais en soit il devrait marcher.
M69-74

M69-74 Le 10 avril 2016 à 14:27

Oui j'ai bien mis ca ...
TheFlameflo

TheFlameflo Le 10 avril 2016 à 14:59

Euh ok... 
Peux-tu alors nous passer le code de ta connexion à la bdd(tu cacheras le mot de passe, si tu veux 😉 ), un screen de ta BDD et de la table membres ?
M69-74

M69-74 Le 10 avril 2016 à 15:09

Hello !

En fait, j'ai trouvé : Le nombre de valeurs dans ma requête ne correspondait pas au nombre de colonnes dans ma table membres ... En tout cas, merci à tous pour votre aide !
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte