Problème base de donnée my sql

Utilisateur anonyme -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour j'ai crée ma page d'inscription sur mon site mais quand je souhaite faire un testent enregistrant au hazard un membre rien ne s'affiche dans la vdd j'ai veirifier le no de la table etc... voici mon code php je précise je suis sur mamp

Serveur: localhost:8889 »Base de données: espace_menbre »Table: membre

cordialement

le php

<!DOCTYPE html>

<?php
 $bdd = new PDO('mysql:host=localhost:8889;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é!";
      header('index.php');
     }
     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>

           <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 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>

         
        </fieldset>
        </form>
        
      </article>
     </section>
     <!--fin contenue-->

     <!-- debut aside -->
     <?php
     include('sidebar.php');
     ?>
    </body>
</html>


EDIT : Ajout du langage dans les balises de code

3 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,

    Commence par désactiver la redirection pour pouvoir voir les éventuelles erreurs.

    Ensuite, places le code de ta requête dans un bloc TRY/CATCH
    try{
       $sql = "INSERT INTO membre (pseudo, mail, motdepasse) VALUES(:pseudo, :mail, :motdepasse)";
       $variables = array(":pseudo"=>$pseudo,":mail"=>$mail,":mdp"=>$mdp);
       $insertmbr = $bdd->prepare($sql);
       $insertmbr->execute($variables);
       $erreur = "Votre compte a bien été enregistré!";
       // header('index.php'); On le desactive durant les tests
    }catch(Exception as $e){
      // En cas de soucis dans la requête
      echo "<br>Erreur !<br> ".$e->getMessage();
      echo "<br>Dans la requête :<br>".$sql;
      echo "<br> Avec les variables :<br>";
      print_r($variables);
    }
    


    Ajoutes également la ligne suivante au début de ton code php
    error_reporting(E_ALL);
    

    0
    1. Utilisateur anonyme
       
      Bonjour j'ai remplacé mon code par le tient mais sa ne fonctionne pas sa me fait une page blanche
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Utilisateur anonyme
       
      Question.... Tu passes bien par le LOCALHOST ?
      Quelle est l'URL présente dans ton navigateur lorsque tu affiches cette page ?
      0
    3. Utilisateur anonyme
       
      http://localhost:8888/inscription.php
      0
    4. Utilisateur anonyme
       
      quelqu'un a une idée svp?
      0
    5. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Place le code de connexion à la BDD dans un bloc try/catch
      0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bon...
    reprenons tout depuis le début.....

    1 - Tu créés un fichier qui contiendra le code de connexion à ta BDD.
    Ce fichier, nomme le : cnxBDD.php et tu y mets le code suivant:
    <?php
    //Fichier cnxBDD.php
     // connexion à la base de données
     $host = "localhost";
     $dbname = "espace_menbre";
     $user = "root";
     $pwd = "root";
      try {
          $bdd = new PDO("mysql:host=$host;dbname=$dbname", $user, $pwd);
      } catch (PDOException $e) {
          echo "<br>".$e."<br>";
          printf("%s:%d %s (%d) [%s]\n", $e->getFile(), $e->getLine(), $e->getMessage(), $e->getCode(), get_class($e));
          exit('Impossible de se connecter à la base de données.');
      }
    ?>
    

    Ensuite, dans ton fichier inscription.php tu places le code suivant :
    
    <?php
    //----------------------------------------------//
    //en cas d'erreurs php:
    //----------------------------------------------//
    error_reporting(E_ALL);
    
    //----------------------------------------------//
    //connexion à la BDD
    //----------------------------------------------//
    require_once "cnxBDD.php";
    
    //----------------------------------------------//
    // le temps des tests :
    //----------------------------------------------//
      echo "<br>Variables POST =<br>";
      echo "<pre>";
      print_r($_POST);
      echo "</pre>";
      
    //----------------------------------------------//
    //récupération PROPRE des variables :
    //----------------------------------------------//
    $pseudo = !empty($_POST['speudo']) ? htmlspecialchars($_POST['speudo']) : NULL;
    $mail   = !empty($_POST['mail']) ? htmlspecialchars($_POST['mail'])  : NULL;
    $mail2  = !empty($_POST['mail2']) ? htmlspecialchars($_POST['mail2'])  : NULL; 
    $mdp    = !empty($_POST['mdp']) ? sha1($_POST['mdp'])  : NULL;
    $mdp2   = !empty($_POST['mdp2']) ? sha1($_POST['mdp2'])  : NULL;
    
    
    //----------------------------------------------//  
    //Traitement du submit :
    //----------------------------------------------//
    if(isset($_POST['forminscription'])){
     if ($pseudo && $mail && $mail2 && $mdp && $mdp2) {
       if ($strlen($pseudo) <= 255){ 
        if ($mail == $mail2) {
          if (filter_var($mail, FILTER_VALIDATE_EMAIL)) {
           if ($mdp != $mdp2) {
             $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 pseudo est trop long";
       }
      }else {
        $erreur = "Tous les champs doivent être conpletés !";
      }
    }
    
    //----------------------------------------------//
    // Fin du code PHP
    //----------------------------------------------//
    ?>
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8">
        <?php
         include('title.php');
        ?>
       <link rel="stylesheet" type="text/css" href="style.css">
      </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>
            <?php
             if (!empty($erreur)){
              echo '<font color="red">'.$erreur."</font>";
             }
            ?>
           <form method="post" action="">
            <fieldset style="margin-right: 20px;">        
              <center>
               <label for="speudo">speudo: </label>
               <input type="speudo" name="speudo"  placeholder="Ex: Votre speudo" value="<?php echo $speudo; ?>"/><br><br>
               <label for="mail">email: </label>
               <input type="email" name="mail"  placeholder="Votre Email" id="mail" value="<?php echo $mail; ?>"/><br><br>
               <label for="mail2">Confirmation du mail: </label>
               <input type="email" name="mail2"  placeholder="Confirmer votre email:" id="mail2" value="<?php 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>        
            </fieldset>
            </form>
          </article>
         </section>
        <!--fin contenue-->
    
       <!-- debut aside -->
       <?php
        include('sidebar.php');
       ?>
       </div> <!-- Fin DIV conteneur -->
      </body>
    </html>
    
    


    Au passage .. j'ai corigé des erreurs de "placements" de balises html...
    et supprimé certains choses superflues.

    0
    1. Utilisateur anonyme
       
      merci mais quand je souhaite allez sur la page inscription.php sa me dit ceci

      PDOException: SQLSTATE[HY000] [1049] Unknown database 'espace_menbre' in /Applications/MAMP/htdocs/cnxBDD.php:9 Stack trace: #0 /Applications/MAMP/htdocs/cnxBDD.php(9): PDO->__construct('mysql:host=loca...', 'root', 'root') #1 /Applications/MAMP/htdocs/inscription.php(10): require_once('/Applications/M...') #2 {main}
      /Applications/MAMP/htdocs/cnxBDD.php:9 SQLSTATE[HY000] [1049] Unknown database 'espace_menbre' (1049) [PDOException] Impossible de se connecter à la base de données.
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Tu peux vérifier le nom de ta bdd ?
      Et nous montrer Une capture d'écran de ton phpmyadmin par exemple. ..
      0
    1. Utilisateur anonyme
       
      je vient de modifier mes erreur de frappe j'arrive a accédé a la page d'inscription mais en haut a gauche de l'écran voila ce que sa fait
      0
    2. Utilisateur anonyme
       
      Variables POST =
      Array
      (
      )
      0
    3. Utilisateur anonyme
       
      et quand je click sur inscrire sa me fait sa

      Variables POST =
      Array
      (
      [speudo] =>
      [mail] =>
      [mail2] =>
      [mdp] =>
      [mdp2] =>
      [forminscription] => m'inscrire
      )
      0
    4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Utilisateur anonyme
       
      Et as tu mis des valeurs dans tes champs ?
      Car là ... ça t'affiche ce que ton formulaire envoie au serveur.....
      Si tu n'as rien rempli .. c'est normal que l'array ne contienne rien.
      0
    5. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Et pour info .. c'est lié à ce bout de code que je t'ai rajouté (comme l'indique le commentaire.....) le temps des tests :
      //----------------------------------------------//
      // le temps des tests :
      //----------------------------------------------//
        echo "<br>Variables POST =<br>";
        echo "<pre>";
        print_r($_POST);
        echo "</pre>";
      
      0