Rien ne s'enregistre dans la BDD

Ce topic a été résolu
mister1610

mister1610 Le 1 avril 2017 à 14:02 (Édité le 25 janvier 2019 à 17:53)

J'ai crée un formulaire d'inscription mais quand je veut m’enregistrer pour tester bah sa n'enregistre pas dans la BDD

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

Bladoom Le 1 avril 2017 à 14:35

Salut mister1610 !
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 😋 )
TheOldNoob

TheOldNoob Le 1 avril 2017 à 16:05

sha1... shapik !
mister1610

mister1610 Le 1 avril 2017 à 19:41

Salut Bladoom,
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

TheFlameflo Le 1 avril 2017 à 23:06 (Édité le 1 avril 2017 à 23:08)

Salut !

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

mister1610 Le 2 avril 2017 à 00:19

Salut TheFlameflo,
J'ai essayer un echo et sa ne donne rien.
 Voila ma bdd
Zbuu

Zbuu Le 2 avril 2017 à 01:23

Salut 

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

TheFlameflo Le 2 avril 2017 à 01:47

Salut !

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

mister1610 Le 2 avril 2017 à 09:00

Salut Zbuu,
même avant comfirmekey et key sa marchait pas
mister1610

mister1610 Le 2 avril 2017 à 09:09

Je vient de chnger ton espace TheFlameflo mais c'était deja un espace mais grand bref , je vient d'enlever le FILTER_VALIDATE_EMAIL et sa me sort cette erreur
TheOldNoob

TheOldNoob Le 2 avril 2017 à 09:24

L'erreur de ton image par d'un champ "avatar" que je vois pas dans ton code. Surtout pas a la ligne 40...
mister1610

mister1610 Le 2 avril 2017 à 09:25

comment je suis sensé enleve cette erreur ?
Zbuu

Zbuu Le 2 avril 2017 à 12:25

Simplement comme je t'ai dis plus haut, dans ta base de donnée ton champ avatar ne peut pas être nul. Alors soit tu t'arranges à ce que dans ta requêtes tu lui insert une valeur.

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

mister1610 Le 2 avril 2017 à 13:01

Dacc merci de ta réponse je test sa après 
mister1610

mister1610 Le 2 avril 2017 à 21:02

Comment je doit-je faire pour mettre default.jpg en valeur default ?
Zbuu

Zbuu Le 3 avril 2017 à 19:11

Tu dois aller sur phpmyadmin :
  • 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 
Et voila ton champ est modifier 😀 
mister1610

mister1610 Le 3 avril 2017 à 19:36

Merci de ton info maintenant faut que je l'ajoute au code 😉
mister1610

mister1610 Le 3 avril 2017 à 20:10

Mais sa résout toujours pas pourquoi rien ne s'enregistre dans la bdd
Zbuu

Zbuu Le 3 avril 2017 à 21:30

Tu as d'autre erreur qui s'affiche ? 

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

mister1610 Le 3 avril 2017 à 21:38

Tu as mis le même code que j'ai mis au dessus ? Car moi sa enregistre pas 
Zbuu

Zbuu Le 3 avril 2017 à 21:49

oui j'ai copier coller ton code directement juste pour voir si il y avait une erreur de syntaxe etc...

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

mister1610 Le 3 avril 2017 à 21:50

Car je regardé sa demain mais c'est bizarre que moi sa ma enregistrer 1 compte et après plus rien
Zbuu

Zbuu Le 3 avril 2017 à 21:54

Tu as bien changé les informations du formulaire ou vidé ta base de donnée avant ? 
TheOldNoob

TheOldNoob Le 3 avril 2017 à 22:07

ta table et bien en auto incrémentation?
mister1610

mister1610 Le 3 avril 2017 à 22:09

Je n'ai rien toucher à la bdd appart ajouter des choses a la table, et oui c'est en auto incrémentation