Problème d'enregistrement de membre dans ma BDD

Xooit

Xooit Le 3 avril 2016 à 17:09 (Édité le 25 janvier 2019 à 17:50)

Bonjour, voici la page php que que j'ai crée une suivant le auto de "PrimFX" le problème c'est que quand j'appuis sur inscrire rien ne se passe dans ma base de donnée je suis sur mamp, et je voudrai savoir si quelqu'un pourrai m'aidez a trouver mon problème svp .

cordialement :

<!DOCTYPE html>
<?php
error_reporting(E_ALL);
   $bdd = new PDO('mysql:host=localhost:8888;dbname=espace_menbre', 'root','root');      //connection a la base de donnée
      if (isset($_POST['forminscription'])) 
      $pseudo = htmlspecialchars($_POST['speudo']);
       $mail = htmlspecialchars($_POST['mail']);
       $mail2 = htmlspecialchars($_POST['mail2']);            //protection java
       $mdp = sha1($_POST['mdp']);
       $mdp2 = sha1($_POST['mdp2']);
{
   if (!empty($_POST['speudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']))
    {
       
       $speudolength = strlen($pseudo);
       if ($speudolength <= 255)
        {
           
          if ($mail == $mail2)
           {
              if (filter_var($mail, FILTER_VALIDATE_EMAIL))
           {
             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é enregistré!";
                
             }
             else
             {
                $erreur = "le mot de passe ne conrespond pas!";
             }
             }
             else
             {
                $erreur = "Votre adresse email n'est pas valide!";
             }
          }
          else
          {
             $erreur = "l'adresse email ne conrespond pas!";
          }
       }
       else
       {
          $erreur = "Votre speudo est tro long";
       }
    }
    else
    {
       $erreur = "Tous les champs doivent être conpleter!";
    }
}
?>
<html>
   <meta charset="UTF-8">
   <link rel="stylesheet" type="text/css" href="style.css">
      <head>
         <?php
            include('title.php');
         ?>
      </head>
            <body>
               <div id="conteneur">
               <?php
                  include('titre.php');
                  ?>
                              
               <!--debut menu-->
                  <?php
                  include('menu.php');
                  ?>
            <!--fin menu-->
            <!--debut contenue-->
            <section id="contenu">
                  <article>
                     <h1>Inscription</h1>
                     <form method="post" action="">
                     <?php
                        if (isset($erreur)) 
                        {
                           echo '<font color="red">'.$erreur."</font>";
                        }
                        ?>
                        <fieldset style="margin-right: 20px;">
                           
                              <center>
                              <p id="coco">
                                 <label for="speudo">speudo: </label>
                                 
                              <input type="speudo" name="speudo"  placeholder="Ex: Votre speudo" value="<?php if (isset($speudo)){ echo $speudo;} ?>"/><br><br>
                                    
                                 <label for="mail">email: </label>
                              
                              <input type="email" name="mail"  placeholder="Votre Email" id="mail" value="<?php if (isset($mail)){ echo $mail;} ?>"/><br><br>
                           
                                 <label for="mail2">Confirmation du mail: </label>
                              
                              <input  align="justify" type="email" name="mail2"  placeholder="Confirmer votre email:" id="mail2" value="<?php if (isset($mail2)){ echo $mail2;} ?>" /><br><br>
                                 <label for="mdp">Mot de passe: </label>
                           
                              <input type="password" name="mdp"  placeholder="Votre mot de passe:" id="mdp" /><br><br>
                           
                                 <label for="mdp2">Confirmation du mot de passe: </label>
                              
                              <input type="password" name="mdp2"  placeholder="Confirmer votre mot de passe:" id="mdp2" /><br><br>
                              
                              
                                 
                                    <input type="submit" name="forminscription" value="m'inscrire"/><br>
                                    
                              
                              </center>
                              </strong>
                           
                        </fieldset>
                        </p>
                        
                  </article>
               </section>
               <!--fin contenue-->
               <!-- debut aside -->
               <?php>
               include('sidebar.php');
               ?>
            </body>
</html>
quiqou55

quiqou55 Le 3 avril 2016 à 18:21 (Édité le 3 avril 2016 à 18:22)

Salut !
Dans la connexion a la base de donné remplace le localhost:8888 par localhost, le port 8888 est utilisé uniquement par php et non MySql 😀
TheFlameflo

TheFlameflo Le 3 avril 2016 à 19:38

Idem. Pour la connexion à la BDD, juste besoin d'écrire localhost, sans rien d'autre.
Xooit

Xooit Le 3 avril 2016 à 19:46

sa a rien changer mes pourquoi rien ne s'inscrit dans ma bdd ? je comprend pas
quiqou55

quiqou55 Le 3 avril 2016 à 20:08

Après la connexion a la base de donnée ajoute cette ligne pour voir l'erreur : 
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Xooit

Xooit Le 3 avril 2016 à 20:22

sa me dit rien, me met une page blanche et au niveaux de la vdd toujours rien est-ce-que le problème peut venir de la vdd ou de phpmyadmin?
TheFlameflo

TheFlameflo Le 3 avril 2016 à 20:26 (Édité le 3 avril 2016 à 20:27)

Essaye de nous envoyer des screen de ta table, ta bdd et tout ça.
Peut-être que l'erreur est là. 
EDIT : Je ne sais pas, mais ma connexion à la bdd, le nom c'est root et pas de mot de passe, ça vient peut-être de là ?
julienb

julienb Le 4 avril 2016 à 06:10

Salut, 2 petites suggestions afin de repérer d'eventuelles erreurs:

remplacer la création de l'instance PDO au tout début par:
try{ 
   $bdd = new PDO('mysql:host=localhost;dbname=espace_menbre', 'root','root'); 
} catch (PDOException $e) {
   echo "Erreur de connexion à la base de données<br/>";
   echo $e->getMessage();
}

et à la fin remplacer 
$insertmbr = $bdd->prepare("INSERT INTO membre (pseudo, mail, motdepasse) VALUES(?, ?, ?)");
$insertmbr->execute(array($pseudo, $mail, $mdp));
$erreur = "Votre compte a bien été enregistré!";
par
try{
   $insertmbr = $bdd->prepare("INSERT INTO membre (pseudo, mail, motdepasse) VALUES(?, ?, ?)");
   $insertmbr->execute(array($pseudo, $mail, $mdp));
   $erreur = "Votre compte a bien été enregistré!";
}catch(PDOException $e){
   echo "Erreur d'insertion dans la base de données <br/>";
   echo $e->getMessage();
}
julienb

julienb Le 4 avril 2016 à 06:21

(Soucis avec le message d'avant que je n'arrive pas à enregistrer avec la fin..)

De plus, tu as un problème de { et } au début de ton code. Le bloc suivant:
   if (isset($_POST['forminscription'])) 
      $pseudo = htmlspecialchars($_POST['speudo']);
       $mail = htmlspecialchars($_POST['mail']);
       $mail2 = htmlspecialchars($_POST['mail2']);//protection java
       $mdp = sha1($_POST['mdp']);
       $mdp2 = sha1($_POST['mdp2']);
{
   if (!empty($_POST['speudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']))
devrait plutôt ressembler à:
  if (isset($_POST['forminscription'])){
    $pseudo = htmlspecialchars($_POST['speudo']);
    $mail = htmlspecialchars($_POST['mail']);
    $mail2 = htmlspecialchars($_POST['mail2']);/protection java
    $mdp = sha1($_POST['mdp']);
    $mdp2 = sha1($_POST['mdp2']);
      if (!empty($_POST['speudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])){
Ephtos

Ephtos Le 4 avril 2016 à 17:49 (Édité le 4 avril 2016 à 17:50)

Salut 😀 donc j'ai regardé vite fais quelque truc me paraissent bizarre, tu as suivis le tuto de PrimFX donc la connexion à la base de donnée est elle bonne ? Par exemple j'ai remplacé par 127.0.0.1 (pareil que localhost juste une habitude), ensuite ta base de donnée c'est espace_meNbre ou espace_meMbre ? ensuite quelque erreur dans tes test, comme le montre julien.b, j'ai pu lire aussi que mamp utilisait localhost:8889 , si jamais le 127.0.0.1 te donnait une erreur.
<!DOCTYPE html>
<?php
error_reporting(E_ALL);
   $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_menbre', 'root','root'); //espace_meNbre ou espace_membre ?
      if (isset($_POST['forminscription'])){
         $pseudo = htmlspecialchars($_POST['speudo']);
         $mail = htmlspecialchars($_POST['mail']);
         $mail2 = htmlspecialchars($_POST['mail2']);            //protection java
         $mdp = sha1($_POST['mdp']);
         $mdp2 = sha1($_POST['mdp2']);
        if (!empty($_POST['speudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])){
                 $speudolength = strlen($pseudo);
                 if ($speudolength <= 255){                     
                    if ($mail == $mail2){                     
                        if (filter_var($mail, FILTER_VALIDATE_EMAIL)){
                            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é enregistré!";
                            }
                            else
                            {
                               $erreur = "le mot de passe ne conrespond pas!";
                            }
                            }
                           else
                           {
                             $erreur = "Votre adresse email n'est pas valide!";
                           }
                          }
                    else
                    {
                       $erreur = "l'adresse email ne conrespond pas!";
                    }
                 }
                 else
                 {
                    $erreur = "Votre speudo est tro long";
                 }
              }
              else
              {
                 $erreur = "Tous les champs doivent être conpleter!";
              }
            }
         }
?>
<html>
   <meta charset="UTF-8">
   <link rel="stylesheet" type="text/css" href="style.css">
      <head>
         <?php
            include('title.php');
         ?>
      </head>
            <body>
               <div id="conteneur">
               <?php
                  include('titre.php');
                  ?>
                              
               <!--debut menu-->
                  <?php
                  include('menu.php');
                  ?>
            <!--fin menu-->
            <!--debut contenue-->
            <section id="contenu">
                  <article>
                     <h1>Inscription</h1>
                     <form method="post" action="">
                     <?php
                        if (isset($erreur)) 
                        {
                           echo '<font color="red">'.$erreur."</font>";
                        }
                        ?>
                        <fieldset style="margin-right: 20px;">
                           
                              <center>
                              <p id="coco">
                                 <label for="speudo">speudo: </label>
                                 
                              <input type="speudo" name="speudo"  placeholder="Ex: Votre speudo" value="<?php if (isset($speudo)){ echo $speudo;} ?>"/><br><br>
                                    
                                 <label for="mail">email: </label>
                              
                              <input type="email" name="mail"  placeholder="Votre Email" id="mail" value="<?php if (isset($mail)){ echo $mail;} ?>"/><br><br>
                           
                                 <label for="mail2">Confirmation du mail: </label>
                              
                              <input  align="justify" type="email" name="mail2"  placeholder="Confirmer votre email:" id="mail2" value="<?php if (isset($mail2)){ echo $mail2;} ?>" /><br><br>
                                 <label for="mdp">Mot de passe: </label>
                           
                              <input type="password" name="mdp"  placeholder="Votre mot de passe:" id="mdp" /><br><br>
                           
                                 <label for="mdp2">Confirmation du mot de passe: </label>
                              
                              <input type="password" name="mdp2"  placeholder="Confirmer votre mot de passe:" id="mdp2" /><br><br>
                              
                              
                                 
                                    <input type="submit" name="forminscription" value="m'inscrire"/><br>
                                    
                              
                              </center>
                              </strong>
                           
                        </fieldset>
                        </p>
                        
                  </article>
               </section>
               <!--fin contenue-->
               <!-- debut aside -->
               <?php>
               include('sidebar.php');
               ?>
            </body>
</html>

Xooit

Xooit Le 4 avril 2016 à 20:59

Bonjour j'ai remplacer mon code par celui donnée par (Ephtos) et sa me fait une page blanche. ?????
Xooit

Xooit Le 4 avril 2016 à 21:06

et j'ai corrigé  les "speudo" par "pseudo
Xooit

Xooit Le 4 avril 2016 à 21:26 (Édité le 4 avril 2016 à 21:31)

mais toujours rien j'ai beau essayer tel ou tel manipe mais rien fonctionne c'est bizarre
Ephtos

Ephtos Le 5 avril 2016 à 12:15 (Édité le 5 avril 2016 à 12:42)

<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=membre', 'root','');
      if (isset($_POST['forminscription'])){
         $pseudo = htmlspecialchars($_POST['pseudo']);
         $mail = htmlspecialchars($_POST['mail']);
         $mail2 = htmlspecialchars($_POST['mail2']);            //protection java
         $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)){
                            //==============================================================================================//
                            if ($mdp == $mdp2){
                            $insertmbr = $bdd->prepare("INSERT INTO membre (pseudo, mail, mdp) VALUES(?, ?, ?)");
                            $insertmbr->execute(array($pseudo, $mail, $mdp));
                            $erreur = "Votre compte a bien été enregistré!";
                            }//mdp
                            else
                            {
                               $erreur = "le mot de passe ne conrespond pas!";
                            }        
                            //==============================================================================================//                            
                            }//filtervalidate
                           else
                           {
                             $erreur = "Votre adresse email n'est pas valide!";
                           }
                           //============================================================================================================================
                         }// mail = mail2 
                          else
                          {
                             $erreur = "l'adresse email ne conrespond pas!";
                          }
                          //================================================================================================================================//
                      }//taillepseudo      
                 else
                 {
                    $erreur = "Votre pseudo est tro long";
                 }
                 //=========================================================================================================================//  
              }//champ complété
              else
              {
                 $erreur = "Tous les champs doivent être conpleter!";
              }
              //===================================================================================================================//
            }//si appuie sur le bouton formulaire
?>
Voila le code php fonctionnel, je l'ai réessayer avec une bdd etc, tout est fonctionnel. donc j'ai eu une erreur de parsing, un } en trop, donc retirée, puis le code fonctionne. Je te laisse comme c'est mais modifi ton PDO et ton INSERT par les valeurs que tu as 😀 en esperant aidé (ps j'ulite wamp, donc n'oublie pas de remettre root en mot de passe PDO 😋 )
Xooit

Xooit Le 5 avril 2016 à 12:58

bonjour sa ne marche toujours pas mais merci quand-même de m'avoir aider je vous remercie tous 😀:)
Xooit

Xooit Le 5 avril 2016 à 13:01

sa doit être camp qui bues je vais réessayer sur wamp la semaine prochaine je vous tient au courant et si sa fonctionne je marquerai  pk .
julienb

julienb Le 6 avril 2016 à 21:15

Installe xdebug et poste nous les messages d'erreurs que tu as quand tu essayes d'utiliser ton code.
Paolacci

Paolacci Le 6 avril 2016 à 21:57

Tu as bien mis la balise </form> à la fin de ton formulaire ? 
yvan

yvan Le 11 avril 2016 à 00:18

essai ça et il faut être sure que les même entité de ta base de donnée son les même dans ton code
yvan

yvan Le 11 avril 2016 à 00:20

<meta charset="utf8">
<?php
$bdd = new PDO('mysql:host=localhost;dbname=formulaire','root','');
//$mot_de_passe = sha1($_POST['mot_de_passe']);
if (isset($_POST['submit'])) 
{
$pseudo = htmlspecialchars(trim($_POST['pseudo']));
$mot_de_passe = htmlspecialchars(trim($_POST['mot_de_passe']));
if (empty($pseudo)) 
{
echo "Veuilez saisir votre pseudo S.V.P !<br/>";
}else if (empty($mot_de_passe)) 

{
echo "Veuillez saisir votre mot de passe S.V.P !";
}else { 
$pseudo = htmlspecialchars($_POST['pseudo']);
$mot_de_passe = htmlspecialchars($_POST['mot_de_passe']);
$insertmsg = $bdd ->prepare('INSERT INTO utilisateur(pseudo,mot_de_passe) VALUES (?,?) ');
$insertmsg -> execute(array($pseudo,$mot_de_passe));
$mot_de_passe = md5($mot_de_passe);
die('Vous êtes connecter');
       
//$req = $bdd->prepare("SELECT id FROM utilisateur WHERE pseudo=$pseudo AND mot_de_passe=$mot_de_passe");
//$req ->execute(array('pseudo' => $pseudo, 'mot_de_passe' => $mot_de_passe));
//$resultat = $req-> fetch();
//if(!$resultat)

// {

// echo "Nom d'utilisateur ou mot de passe incorrect";
//}else{
   // session_start();
   // $_SESSION['id'] = $resultat['id'];
   // $_SESSION['pseudo'] = $pseudo;
   // $_SESSION['mot_de_passe'] = $mot_de_passe;
       //echo 'Vous êtes connecté !';
//}
       
       }
}
?>
<h1>Connexion</h1>
<form action="connexion.php" method="POST">
<p>Votre pseudo</p>
<input type="text" name="pseudo" /><br/>
<p>Votre mot de passe</p>
<input type="password" name="mot_de_passe" /><br/><br/>
<input type="submit" name="submit" value="Se connecter" />
</form>
<a href="inscription.php">Pas encore membre</a>
TheFlameflo

TheFlameflo Le 11 avril 2016 à 01:33

Xooit, peux-tu poster un screen de ta table + bdd et ton code.
On pourrait voir où on en est dans le problème ! ^^ 
Xooit

Xooit Le 11 avril 2016 à 07:25

Ok je testerai ce code, je ferrai un screen de ma bdd en fin de semaine 

Merci a vous.
Xooit

Xooit Le 11 avril 2016 à 21:31

voici ma table 

Xooit

Xooit Le 11 avril 2016 à 21:32

Voici ma bdd
Xooit

Xooit Le 11 avril 2016 à 21:34

et voici mon code

<html>
   <meta charset="UTF-8">
   <link rel="stylesheet" type="text/css" href="style.css">
      <head>
         <?php
            include('title.php');
         ?>
      </head>
            <body>
               <div id="conteneur">
               <?php
                  include('titre.php');
                  ?>
                              
               <!--debut menu-->
                  <?php
                  include('menu.php');
                  ?>
            <!--fin menu-->
            <!--debut contenue-->
            <section id="contenu">
                  <article>
                     <h1>Inscription</h1>
                     <form method="post" action="inscription.php">
                     <?php
                        if (isset($erreur)) 
                        {
                           echo '<font color="red">'.$erreur."</font>";
                        }
                        ?>
                        <fieldset style="margin-right: 20px;">
                           
                              <center>
                              <p id="coco">
                                 <label for="pseudo">pseudo: </label>
                                 
                              <input type="pseudo" name="pseudo"  placeholder="Ex: Votre pseudo" value="<?php if (isset($pseudo)){ echo $pseudo;} ?>"/><br><br>
                                    
                                 <label for="mail">email: </label>
                              
                              <input type="email" name="mail"  placeholder="Votre Email" id="mail" value="<?php if (isset($mail)){ echo $mail;} ?>"/><br><br>
                           
                                 <label for="mail2">Confirmation du mail: </label>
                              
                              <input  align="justify" type="mail" name="mail2"  placeholder="Confirmer votre email:" id="mail2" value="<?php if (isset($mail2)){ echo $mail2;} ?>" /><br><br>
                                 <label for="mdp">Mot de passe: </label>
                           
                              <input type="password" name="mdp"  placeholder="Votre mot de passe:" id="mdp" /><br><br>
                           
                                 <label for="mdp2">Confirmation du mot de passe: </label>
                              
                              <input type="password" name="mdp2"  placeholder="Confirmer votre mot de passe:" id="mdp2" /><br><br>
                              
                              
                                 
                                    <input type="submit" name="forminscription" value="valider"/><br>
                                    
                              
                              </center>
                              </strong>
                           
                        </fieldset>
                        </p>
                        </form>
                        <?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=membres', 'root','root');
      if (isset($_POST['forminscription'])){
         $pseudo = htmlspecialchars($_POST['pseudo']);
         $mail = htmlspecialchars($_POST['mail']);
         $mail2 = htmlspecialchars($_POST['mail2']);            //protection java
         $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)){
                            //==============================================================================================//
                            if ($mdp == $mdp2){
                            $insertmbr = $bdd->prepare("INSERT INTO membres (pseudo, mail, mdp) VALUES(?, ?, ?)");
                            $insertmbr->execute(array($pseudo, $mail, $mdp));
                            $erreur = "Votre compte a bien été enregistré!";
                            }//mdp
                            else
                            {
                               $erreur = "le mot de passe ne conrespond pas!";
                            }        
                            //==============================================================================================//                            
                            }//filtervalidate
                           else
                           {
                             $erreur = "Votre adresse email n'est pas valide!";
                           }
                           //============================================================================================================================
                         }// mail = mail2 
                          else
                          {
                             $erreur = "l'adresse email ne conrespond pas!";
                          }
                          //================================================================================================================================//
                      }//taillepseudo      
                 else
                 {
                    $erreur = "Votre pseudo est tro long";
                 }
                 //=========================================================================================================================//  
              }//champ complété
              else
              {
                 $erreur = "Tous les champs doivent être conpleter!";
              }
              //===================================================================================================================//
            }//si appuie sur le bouton formulaire
            mysql_close();
?>
                  </article>
               </section>
               <!--fin contenue-->
               <!-- debut aside -->
               <?php>
               include('sidebar.php');
               ?>
            </body>
</html>