Veuillez vous connecter ou créer un compte pour suivre ce topic
Ce topic est suivi par: Personne...
Ce topic a été résolu
Auteur Sujet: Problème avec INSERT INTO

Marius

Messages: 138

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 ! Sourire
Publicité

TheFlameflo

Messages: 305

 $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é !

PastyBully

Messages: 15

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.

Marius

Messages: 138

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 !

PastyBully

Messages: 15

$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.

Marius

Messages: 138

Oui j'ai bien mis ca ...

TheFlameflo

Messages: 305

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

Marius

Messages: 138

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 !


Veuillez vous connecter ou créer un compte pour poster une réponse