Bonjour, je rencontre un probleme dans la bdd plus précisemet quand je veux m'inscrire il n'insere pas les données dans la table du coup je peux pas me connecter j'ai essayé de trouver l'erreur dans le code d'inscription mais je trouve pas
voici le code :
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
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($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) {
$pseudolength = strlen($pseudo);
if($pseudolength <= 255) {
if($mail == $mail2) {
if(filter_var($mail, FILTER_VALIDATE_EMAIL)) {
$reqmail = $bdd->prepare("SELECT * FROM membre WHERE mail = ?");
$reqmail->execute(array($mail));
$mailexist = $reqmail->rowCount();
if($mailexist == 0) {
if($mdp == $mdp2) {
$insertmbr = $bdd->prepare("INSERT INTO membre(pseudo, mail, motdepasse) VALUES(?, ?, ?)");
$insertmbr->execute(array($pseudo, $mail, $mdp));
$erreur = "Votre compte a bien été créé ! <a href=\"index.php\">Me connecter</a>";
} else {
$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 !";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Inscription</title>
<link href="https://fonts.googleapis.com/css?family=PT+Sans+Narrow" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="stylepage.css">
<meta charset="utf-8">
</head>
<body>
<div id="container-page-inscription">
<img src="https://media.giphy.com/media/26MiPHyb4Ynvy/giphy.gif" width="200" height="200">
<div align="center" style="margin-top: -260px;">
<h2 style="font-family: 'PT Sans Narrow', sans-serif;margin-top: 55px;">Inscription</h2>
<br /><br />
<p style="margin-top: -35px;margin-left: 130px;font-weight: bold;font-family: 'PT Sans Narrow', sans-serif;color: red;">Vous n'etes pas obligé de mettre un vrai email</p>
<form method="POST" action="" class="form_demo" style="margin-top: -5px;">
<table>
<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; } ?>" class="inputbasic" />
</td>
</tr>
</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; } ?>" class="inputbasic" />
</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; } ?>" class="inputbasic" />
</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" class="inputbasic" />
</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" class="inputbasic" />
</td>
</tr>
<tr>
<td></td>
<td align="center">
<br />
<input type="submit" name="forminscription" value="Je m'inscris" />
</td>
</tr>
</table>
</form>
<?php
if(isset($erreur)) {
echo '<font color="red">'.$erreur."</font>";
}
?>
</div>
<a href="index.php" style="padding: 0px 20px;font-family: 'PT Sans Narrow', sans-serif;color: blue;position: absolute;margin-top: -25px;">Retour a l'acceuil</a>
</body>
</html>
au moment de ton insertion pour savoir si tes données on été inscrite ou non ? (A mon avis, sans grande surprise, il te retournera false).
Aussi, par convention personnelle, je préfère utiliser les requêtes d'insert sous la forme :
$insertmbr = $bdd->prepare("INSERT INTO membre SET pseudo = :pseudo, mail = :mail, motdepasse = :motdepasse");
$insertmbr->execute(array("pseudo" => $pseudo, "mail" => $mail, "motdepasse" => $mdp));
Après, cela reste personnel, mais tu peux essayer, je trouve ça plus visuel dans le sens où tu as chaque variable à côté de chaque marqueur. alors d'avec le "VALUES", si tu as beaucoup de variables, tu devras être sûr d'avoir le bon nombre de variables avec les noms correctes, bref, galère.
- Edité par Etruiaz 27 avril 2017 à 10:25:00
La seul chance qu'on a de gagner la guerre, c'est qu'en face ils soient aussi cons qu'ici !
Pas besoin il est bien connecté a la bdd le probleme c'est que la requete SQL pour inserer des données ne fonctionne pas
Ce n'est pas pour rien si on te dit d'activer les erreurs pdo parce que pdo est muet par défaut donc si tu as une erreur au niveau de ta requete elle s'affichera
"Il est hélas devenu évident aujourd’hui que notre technologie a dépassé notre humanité" A.E.
Oui, la syntaxe de ton insert semble correct... Active les erreurs, et dis nous, je serais pas étonné d'une faute de frape dans un nom de champ... Ou une erreur à la connexion, même si tu es sûr de toi...
Désolé, je ne réponds pas aux questions techniques posées par MP...
c'est bon j'a reglé le probleme c'était une solution assez bizarre j'ai changé de table et de bd j'en n'ai crée un nouveau et ca a marché merci pour vos reponses
J'aime créer , mais en informatique
Probleme bdd
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.