Problème avec INSERT INTO
- Accueil
- Forum
- Programmation
- PHP
- Problème avec INSERT INTO
M69-74 Le 9 avril 2016 à 22:40 (Édité le 25 janvier 2019 à 17:50)
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 Le 9 avril 2016 à 23:36 (Édité le 1 janvier 1970 à 01:00)
$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 Le 10 avril 2016 à 10:02 (Édité le 1 janvier 1970 à 01:00)
M69-74 Le 10 avril 2016 à 10:45 (Édité le 1 janvier 1970 à 01:00)
Profil introuvable Le 10 avril 2016 à 11:58 (Édité le 1 janvier 1970 à 01:00)
$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. TheFlameflo Le 10 avril 2016 à 14:59 (Édité le 1 janvier 1970 à 01:00)
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 Le 10 avril 2016 à 15:09 (Édité le 1 janvier 1970 à 01:00)
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 !