Rien ne s'enregistre dans la BDD
- Accueil
- Forum
- Programmation
- PHP
- Rien ne s'enregistre dans la BDD
mister1610 Le 1 avril 2017 à 14:02 (Édité le 25 janvier 2019 à 17:53)
PHP
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
if(isset($_POST['bt_inscription']))
{
$pseudo = htmlspecialchars($_POST['pseudo']);
$mail = htmlspecialchars($_POST['mail']);
$mail2 = htmlspecialchars($_POST['mail2']);
$motdepasse = sha1($_POST['motdepasse']);
$motdepasse2 = sha1($_POST['motdepasse2']);
if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['motdepasse']) AND !empty($_POST['motdepasse2']))
{
$pseudolenght = strlen($pseudo);
if($pseudolenght <= 255)
{
if($mail == $mail2)
{
if(filter_var($mail, FILTER_VALIDATE_EMAIL))
{
$reqmail = $bdd->prepare("SELECT * FROM membre WHERE mail = ?"); //<!--Vérification si l'adresse mail existe déjà-->
$reqmail->execute(array($mail));
$mailexist = $reqmail->rowCount();
if($mailexist == 0)
{
if($motdepasse == $motdepasse2)
{
$insertmbr = $bdd->prepare("INSERT INTO membre(pseudo, mail, motdepasse) VALUES(?, ?, ?)");
$insertmbr->execute(array($pseudo, $mail, $motdepasse));
$_SESSION['comptecree'] = "Votre à bien était crée!";
// header('Location: Profil.php');
}
else
{
$erreur ="Vos mot de passe sont différent!";
}
}
else
{
$erreur = "Adresse mail déjà utilisé !";
}
}
else
{
$erreur = "Votre Adresse mail n'est pas valide!";
}
}
else
{
$erreur ="Vos Adresse mail sont différente!";
}
}
else
{
$erreur = "Votre pseudo est trop long!";
}
}
else
{
$erreur = "Tous les champs doivent être complétés!";
}
}
?>
HTML
<div class="espace_inscription"><!--espace d'inscription --><!-- configurer php et php my admin-->
<h4>INSCRIPTION </h4>
<a href="" class="account">Déjà Inscrit ? Connectez-vous ICI.</a>
<br><br>
<form class="forminscription" method="post" action="">
<input type="text" placeholder="Pseudo" name="pseudo" class="remplir" style="
margin-left: 15px; height: 35px" width="250px" value="<?php if(isset($pseudo)) {echo $pseudo; } ?>">
<br>
<input type="email" placeholder="Adresse mail" name="mail" class="remplir" style="
margin-left: 15px; height: 35px" width="250px" value="<?php if(isset($pseudo)) { echo $mail; } ?>">
<br>
<input type="email" placeholder="Confimer votre Adresse mail" name="mail2" class="remplir"style="
margin-left: 15px; height: 35px" width="250px"value=" <?php if(isset($mail2)) { echo $mail2; }?>">
<br>
<input type="password" placeholder="Mot de passe" name="motdepasse" class="remplir"style="
margin-left: 14px; height: 35px" width="250px">
<br>
<input type="password" placeholder="Confirmer votre Mot de passe" name="motdepasse2" class="remplir"style="
margin-left: 15px; height: 35px" width="250px">
<br>
<input type="submit" name="bt_inscription" value="Inscription" style="
margin-left: 14px" width="30px">
<br><br>
</form>
<?php
if(isset($erreur))
{
echo '<font color="red">'.$erreur."</font>";
}
?>
</div>
Bladoom Le 1 avril 2017 à 14:35 (Édité le 1 janvier 1970 à 01:00)
Tu as un message d'erreur ?
Sinon, si tu as suivi le tuto et que tu as crée ta table comme Primfx, tu verra qu'il appelle sa table "membres" avec un S. Peut être que le problème viens de la ? ( J'avais le même 😋 )
mister1610 Le 1 avril 2017 à 19:41 (Édité le 1 janvier 1970 à 01:00)
j'ai suivi le tuto de primfx mais ma base de donnée je l'ai appeler membre et non je n'ai pas de message d'erreur sa fait comme si c'etait bon mais sa n'enregistre pas
TheFlameflo Le 1 avril 2017 à 23:06 (Édité le 1 avril 2017 à 23:08)
Pourrais-tu nous donner une capture d'écran de ta base de données ?
Pour repérer l'erreur, mets un "echo quelquechose" juste après la ligne 32.
Si ça s'affiche, le problème vient de la base de données, sinon, ça vient de quelque part d'autre.
Il faudrait aussi entourer la connexion à la base de données par un try catch :
try
{
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e)
{
echo $e->getMessage();
}
Fais aussi la même chose lorsque tu envoies des données dans une table.
Si quelque chose s'affiche, copie le code d'erreur ici (ou screenshot).
J'espère t'avoir aidé !
mister1610 Le 2 avril 2017 à 00:19 (Édité le 1 janvier 1970 à 01:00)
Zbuu Le 2 avril 2017 à 01:23 (Édité le 1 janvier 1970 à 01:00)
Ce ne serait pas à cause de tes champs confirmekey et confirme qui apparemment attendent une valeur ? (Bien que normalement si tu as fais ce @TheFlameflo tu devrais avoir une erreur pdo suivant la version que tu utilises)
Essaye de modifier ta requête avec des valeurs de test pour les champs confirmekey et confirme :
$insertmbr = $bdd->prepare("INSERT INTO membre(pseudo, mail, motdepasse, confirmekey, confirme) VALUES(?, ?, ?, 'test', 1)");
$insertmbr->execute(array($pseudo, $mail, $motdepasse));
Si ça fonctionne avec ces valeurs de "test" alors soit tu t'arrange pour faire en sorte que tes champs soit renseigné ou alors tu modifies les champs dans ta base de donnée pour le permettre d'être nul TheFlameflo Le 2 avril 2017 à 01:47 (Édité le 1 janvier 1970 à 01:00)
Si le echo n'a rien affiché, ça veut dire que quelque chose ne marche pas dans le code, mais avant cette partie (donc en théorie, pas de problème avec la bdd).
Ça veut donc aussi dire qu'il y a une erreur à quelque part d'autre, mais qu'elle n'est pas "détectée"...
Dans la requête pour le mail, il y a des espaces en trop entre "membre" et "WHERE".
Peux-tu essayer de modifier ça dans la requête mail ?
mister1610 Le 2 avril 2017 à 09:00 (Édité le 1 janvier 1970 à 01:00)
même avant comfirmekey et key sa marchait pas
mister1610 Le 2 avril 2017 à 09:09 (Édité le 1 janvier 1970 à 01:00)
TheOldNoob Le 2 avril 2017 à 09:24 (Édité le 1 janvier 1970 à 01:00)
mister1610 Le 2 avril 2017 à 09:25 (Édité le 1 janvier 1970 à 01:00)
Zbuu Le 2 avril 2017 à 12:25 (Édité le 1 janvier 1970 à 01:00)
Ou alors tu va sur phpmyadmin pour modifier ton champ avatar :
- soit tu lui mets une valeur par defaut (ex default.jpg)
- soit tu lui coche la checkbox null pour faire en sorte à ce le champs puisse ne rien contenir
- soit si tu n'a pas besoin d'avatar alors tu peux simplement supprimer le champ avatar
mister1610 Le 2 avril 2017 à 13:01 (Édité le 1 janvier 1970 à 01:00)
mister1610 Le 2 avril 2017 à 21:02 (Édité le 1 janvier 1970 à 01:00)
Zbuu Le 3 avril 2017 à 19:11 (Édité le 1 janvier 1970 à 01:00)
- Tu cliques sur ta base de donnée
- Tu cliques sur ta table
- Tu cliques sur structure (en haut)
- Au niveau de ton champ tu cliques sur l'action "modifier"
- Dans le select "valeur par défaut" tu cliques sur tel que défini
- Et dans l'input qui s'ajoute tu écris la valeur que tu veux par défaut (donc ici default.jpg)
- Ensuite tu cliques sur sauvegarder
mister1610 Le 3 avril 2017 à 19:36 (Édité le 1 janvier 1970 à 01:00)
mister1610 Le 3 avril 2017 à 20:10 (Édité le 1 janvier 1970 à 01:00)
Zbuu Le 3 avril 2017 à 21:30 (Édité le 1 janvier 1970 à 01:00)
J'ai créer une base de donnée pour tester ton code (copier/coller) et voir si nous n'avons pas louper une erreur, et après avoir entrer les champs du formulaire j'ai bien les informations dans la base de donnée.
Si tu veux voir la structure de la base de donnée : Structure base de donnée
Et la ligne qui à été ajoutée : test
mister1610 Le 3 avril 2017 à 21:38 (Édité le 1 janvier 1970 à 01:00)
Zbuu Le 3 avril 2017 à 21:49 (Édité le 1 janvier 1970 à 01:00)
Et pour la base de donnée j'ai créer à peu près la même, j'ai juste mis une valeur par défaut au champ avatar (default.jpg), confirmekey (NULL), et confirme (0)
mister1610 Le 3 avril 2017 à 21:50 (Édité le 1 janvier 1970 à 01:00)
Zbuu Le 3 avril 2017 à 21:54 (Édité le 1 janvier 1970 à 01:00)
TheOldNoob Le 3 avril 2017 à 22:07 (Édité le 1 janvier 1970 à 01:00)
mister1610 Le 3 avril 2017 à 22:09 (Édité le 1 janvier 1970 à 01:00)