Base de données : rien ne s'affiche

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,

Je suis en train de faire un espace membre pour mon site et j'en suis à l'inscription. Seul problème..lorsque je clique sur Inscription, les données ( pseudo et mot de passe) ne s'affichent pas dans ma base de donné ^^

Voici les codes :

Page d'inscription
<?php include ("cnx.php"); ?>

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8" />
 </head>

 <body>
  <h2> Formulaire d'inscription : </h2>

  <form action="" method = "POST">
   <label for="prenom"> Prenom : </label> </br>
   <input type="texte" name = "prenom" /> </br>
 
   <label for="password"> Password : </label> </br>
   <input type="password" name = "password" /> </br>
 
   <input type="submit" value ="Inscription" />
  </form> 
 
  <?php

  if(!empty($_POST))
  {
   $prenom = addslashes($_POST['prenom']) ;
   $password = sha1($_POST['password']) ;
   
   $q = array ('prenom' => $prenom, 'password' => $password) ;
   $sql = 'INSER INTO users ( prenom, password) VALUES ( :prenom, :password)' ;
   $req = $cnx->prepare($sql);
   $req->execute($q);
   echo "Vous êtes enregistré";
  }
  else
  {
   echo "Problème pour cette étape !";
  }

  ?>  
 
 
 </body>
</html>
 


cnx.php :
<?php  

// Connexion à la base de données
try
{
 $cnx = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}

?>


Si qq'un a une idée de la faute que j'ai faite, je suis preneuse !! Merci

2 réponses

  1. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    'lut, normal, il manque un T à ta commande
    INSERT
    !
    P.S.: pense à changer ton algo de hashage: le SHA1 c'est pas très fiable, on arrive de plus en plus à générer des collisions. Utilise le SHA256 ou plus avec la fonction hash(). Aussi, pense à gérer les exceptions lors de ta requête.
    from human import idiocy
    del idiocy
    0
    1. Utilisateur anonyme
       
      Oui j'avais vu et j'ai corrigé cette erreur mais le problème persiste :/
      0
      1. ElementW Messages postés 5690 Statut Contributeur 1 293 > Utilisateur anonyme
         
        Dans ce cas ajoute la gestion des exceptions au moment de ta requête, tu en tireras sûrement des infos utiles...
        0
      2. Utilisateur anonyme > ElementW Messages postés 5690 Statut Contributeur
         
        Merci pour tes conseils :) j'ai prévu quelques exceptions mais je ne voulais pas alourdir ce code. Ce qui est bizarre c'est qu'une fois que j'ai cliqué sur Inscription il y a le message "Vous êtes enregistrés" donc ce n'est pas un problème d'exceptions :/
        0
  2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Tu peux essayer ceci :

       // Récupération des variables (avec ISSET  et !empty):
       $prenom = isset($_POST['prenom']) && !empty($_POST['prenom']) ? addslashes($_POST['prenom']):NULL ;
       $password = isset($_POST['password']) && !empty($_POST['password']) ? sha1($_POST['password']) :NULL ;
      
      if($prenom && $password)  {  
     
     try{
        $q = array (':prenom' => $prenom, ':password' => $password) ;
        $sql = 'INSERT INTO users 
                       ( prenom, password) 
               VALUES ( :prenom, :password)' ;
         $req = $cnx->prepare($sql);
         $req->execute($q);
         echo "Vous êtes enregistré";
      }catch(Exception $e) {
        die('Erreur : '.$e->getMessage());
       }
      } else {
      // Password et/ou Prenom sont innexistants ou vides
       echo "Problème pour cette étape !";
      }
    
    


    Cordialement,
    Jordane
    0
    1. Utilisateur anonyme
       
      Merci pour ta réponse ! Malheureusement il n'y a rien dans la base alors que le
      message "vous êtes enregistré" s'affiche
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Utilisateur anonyme
         
        Tu as testé ta requête en direct dans ta BDD ??
        Tu remplaces les variables par des valeurs réelles (celles que tu rentres dans ton formulaire)
        INSERT INTO users 
                           ( prenom, password) 
                   VALUES ( 'test', 'F12sSFedv21')
        


        NB : Quand je dis en direct dans ta BDD ... c'est SANS PASSER par le PHP.
        Donc soit par PHPMyadmin ... soit via un logiciel comme : HeidiSql ( voir ici : https://codes-sources.commentcamarche.net/faq/10778-heidisql-tester-ses-requetes-sql
        0
    2. Utilisateur anonyme
       
      J'ai trouvé mon erreur ^^ dans mon code j'ai utilisé "prénom" mais dans ma base de donnée c'est "pseudo" j'ai donc mis ces lignes

      'INSERT INTO utilisateurs ( id, pseudo, password) VALUES ( "", :prenom, :password)' ;


      E tout cas merci à ceux qui ont cherché pour m'aider !!
      0