PHP

Enregistrement d'un formulaire dans la BDD

Non Résolu

Bonjour,


Débutante en php j'ai un projet a effectuer dans le cadre de mes études.

Alors voila, j'ai créer ma page de connexion a la base de donnée qui marche ainsi qu'une page d'acceuil qui marche également.

Malheureusement je n'arrive pas a effectuer mon inscription, la page s'affiche bien mais aucune données n'est envoyé a ma base donnée.

J'ai relue beaucoup de fois mais je ne vois pas ou se trouve l'erreur.

Peut être que vous pourrez m'aider :)


Merci d'avance, je vous met mon code :

gphymeet-inscription.php


 <?php
     // Permet de savoir si une session utilisatuer a été démaré et récupéré
     session_start();
     include('connect.php');
     // Fichier PHP contenant la connexion à la BDD
     // require('Connect.php');
     // S'il y a une session alors on ne retourne plus sur cette page
      if(isset($_SESSION['id'])){
         header('Location:gphymeet-acceuil.php');
         exit;
     }
    
     // Si la variable "$_Post" contient des informations alors on les traitres
      if(!empty($_POST)){
         extract($_POST);
         $valid = true;
         // On se place sur le bon formulaire grâce au "name" de la balise "input"
         //trim — Supprime les espaces (ou d'autres caractères) en début et fin de chaîne
         // htmlentities — Convertit tous les caractères éligibles en entités HTML
         if (isset($_POST["INSCRIPTION"])){
          echo '1'; exit;
             $NOM  = htmlentities(trim($NOM)); // On récupère le nom
             $PRENOM = htmlentities(trim($PRENOM)); // on récupère le prénom
             $PSEUDO = htmlentities(trim($PSEUDO)); // on récupère le pseudo
             $DDN= htmlentities(trim($DDN)); // on récupère la date de naissance
             $SEXE= htmlentities(trim($SEXE)); // on récupère le genre F/M
             $TEL = htmlentities(trim($TEL)); // on récupère le prénom
             // strtolower — Renvoie une chaîne en minuscules
             $MAIL = htmlentities(strtolower(trim($MAIL))); // On récupère le mail
             $MDP = trim($MDP); // On récupère le mot de passe 
             $MDP2 = trim($MDP2); //  On récupère la confirmation du mot de passe


              //  Vérification du nom
              if(empty($NOM)){
                 $valid = false;
                 $er_NOM= ("Le nom d utilisateur ne peut pas être vide");
             }


             //  Vérification du prénom
              if(empty($PRENOM)){
                  $valid = false;
                  $er_PRENOM = ("Le prenom d utilisateur ne peut pas être vide");
             }


             //  Vérification du pseudo
              if(empty($PSEUDO)){
                  $valid = false;
                  $er_PSEUDO = ("Le pseudo de l utilisateur ne peut pas être vide");
             }else{
                 //Vérifie que le pseudo est disponible
                  $req_PSEUDO = $DB->query("SELECT PSEUDO FROM profil WHERE PSEUDO = ?",
                  array($PSEUDO));
                  $req_PSEUDO = $req_PSEUDO->fetch();


                   if ($req_PSEUDO['PSEUDO'] <> ""){
                       $valid = false;
                       $er_PSEUDO = ("Ce pseudo existe déjà");
                   }
             }
              //Vérification de la date de naissance
              if($req_DDN['DDN']){
                  $valid = false;
                  $er_DDN = ("Vous devez rentrer une date de naissance valide");
              }else{
                 // date d'aujourd'hui
                 $date = new DateTime();
                 // date - 18 ans
                 $date_18 = $date->sub(new DateInterval('P18Y'));
                 // si $_POST['date_naissance'] est au format date par exemple = 2001-12-25
                 $DDN = new DateTime($_POST['DDN']);
                  if(!$DDN>= $date_18){
                        //le visiteur a PAS encore 18 ans
                       $valid = false;
                       $er_DDN = ("Vous devez etre majeur pour vous inscrire");
                 }
              }
              //Vérification de TEL
              if(empty($TEL)){
                  $valid = false;
                  $er_TEL = ("Le téléphone de l utilisateur ne peut pas être vide");
             }


             // Vérification du sexe
             if(empty($SEXE)){
                $valid = false;
                $er_SEXE = ("Le sexe de l utilisateur ne peut pas être vide");
             }


             // Vérification du mail
             if(empty($MAIL)){
               $valid = false;
               $er_MAIL = ("Le mail ne peut pas être vide");
                 // On vérifit que le mail est dans le bon format
                 // fonction preg_match() retourne une valeur booléenne True si la variable correspond à l’expression régulière situé en premier paramètre.
             }elseif(!preg_match("/^[a-z0-9\-_.]+@[a-z]+\.[a-z]{2,3}$/i", $MAIL)){
                $valid = false;
                $er_MAIL = ("Le mail n est pas valide");
             }else{
                // On vérifie que le mail est disponible
                 $req_MAIL = $DB->query("SELECT MAIL FROM profil WHERE MAIL = ?",array($MAIL));
                 $req_MAIL = $req_MAIL->fetch();
                if ($req_MAIL['MAIL'] <> ""){
                   $valid = false;
                   $er_MAIL = ("Ce mail existe déjà");
               }
             }


             // Vérification du mot de passe
             if(empty($MDP)) {
               $valid = false;
               $er_MDP = ("Le mot de passe ne peut pas être vide");
             }elseif($MDP != $MDP2){
                $valid = false;
                $er_MDP = ("La confirmation du mot de passe ne correspond pas");
             }


             // Si toutes les conditions sont remplies alors on fait le traitement
             if($valid){
               // cript : Hachage à sens unique (indéchiffrable)
               $MPD = crypt($MDP, "$6$rounds=5000$macleapersonnaliseretagardersecret$");
               $date_creation_compte = date('Y-m-d H:i:s');
               // On insert nos données dans la table PROFIL
               $DB->insert("INSERT INTO profil (NOM, PRENOM, PSEUDO, DDN, SEXE, TEL, MAIL, MDP, MDP2, date_creation_compte) VALUES 
               (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
               array($NOM, $PRENOM, $PSEUDO, $DDN, $SEXE, $TEL, $MAIL, $MDP, $MDP2, $date_creation_compte));
               header("Location: gphymeet-inscription1.php");
               exit;
             }
         }
     }
   ?>
<!DOCTYPE html> 
<html>


   <head>
           <meta charset="utf-8">
           <meta http-equiv="X-UA-Compatible" content="IE=edge">
           <meta name="viewport" content="width=device-width, initial-scale=1">


           <link href = "gphymeet-inscription1.css" media="all" rel="stylesheet" type="text/css" />
           <header> 
      


             <title> GPHYMEET - Inscription1 </title>
             <img src="Gmeet.png" class="imageflottante" alt="GPHYMEET" width="10%" height="20%" style="position:absolute;top:0px;left:0px;">
           </header> 
   </head>


   <body>
        
          <h1> INSCRIPTION </h1> <h2> Gphymeet </h2>


                 
                 <div  class = "div2" style="width: 600px;  padding-top:10px; padding-bottom:10px;border: 3px solid #A0A0A0; text-align: center;background: #C0C0C0;">
                   
                   <div class="div1"> <p> Création d'un compte </p> </div> 
                   <!--  POST: permet envoyer le formulaire d'une page à l'autre -->
                   <form method="post" action="gphymeet-inscription1.php">
                     
                     <?php
                       // S'il y a une erreur sur le nom alors on affiche
                        if (isset($er_NOM)){
                          echo $er_NOM;
                        }
                     ?>


                     <p>
                       <label class="label1" for="NOM"> NOM* :</label> </br>
                       <input class="input2" type="text" name="NOM" id="NOM" placeholder="Ex : DUBOISmaxlength="30" value="<?php if(isset($NOM)){ echo $NOM; }?>" >
                     </p>


                     <?php
                       // S'il y a une erreur sur le prenom alors on affiche
                        if (isset($er_PRENOM)){
                         echo $er_PRENOM;
                        }
                     ?>


                     <p>
                       <label class="label1" for="PRENOM"> PRENOM* :</label> <br/> 
                       <input class="input2" type="text" name="PRENOM" id="PRENOM" placeholder="Ex : Lucas"  maxlength="30" value="<?php if(isset($PRENOM)){ echo $PRENOM; }?>" />
                     </p>


                     <?php
                       // S'il y a une erreur sur le pseudo alors on affiche
                        if (isset($er_PSEUDO)){
                         echo $er_PSEUDO;
                       }
                     ?>


                     <p>
                       <label class="label1" for="PSEUDO"> PSEUDO* :</label> <br/> 
                       <input class="input2" type="text" name="PSEUDO" id="PSEUDO"  maxlength="15" value="<?php if(isset($PSEUDO)){ echo $PSEUDO; }?>" />
                     </p>
 
                     <?php
                       // S'il y a une erreur sur lA DATE DE NAISSANCE alors on affiche
                        if (isset($er_DDN)){
                         echo $er_DDN;
                        }
                     ?>


                     <p>     
                       <label class="label1" for="DDN"> DATE DE NAISSANCE* :</label> <br/> 
                       <input class="input2" type="DATE" name="DDN" id="DDN" value="<?php if(isset($DDN)){ echo $DDN; }?>" />
                     </p>


                      <?php
                       // S'il y a une erreur sur le SEXE alors on affiche
                        if (isset($er_SEXE)){
                         echo $er_SEXE;
                        }
                     ?>


                      <p>
                        <label class="label1" for="SEXE"> GENRE* :</label> <br/> 
                        <input type="radio" id="GENREF" name="SEXE" value="GENREF" /> <label for="GENREF"> Feminin</label>
                        <input type="radio" id="GENREM" name="SEXE" value="GENREM" /> <label for="GENREM"> Masculin</label>
                      </p>
                    
                     <?php
                       // S'il y a une erreur sur le TEL alors on affiche
                        if (isset($er_TEL)){
                         echo $er_TEL;
                        }
                     ?>


                     <p>
                       <label class="label1" for="TEL"> Numéro de téléphone* :</label> <br/> 
                       <input class="input2" type="text" name="TEL" id="TEL" placeholder="Ex : 06 .. .. .. .."  maxlength="30" value="<?php if(isset($TEL)){ echo $TEL; }?>"  />
                     </p>


                     <?php
                       // S'il y a une erreur sur le MAIL alors on affiche
                        if (isset($er_MAIL)){
                         echo $er_MAIL;
                        }
                     ?>


                     <p>
                       <label class="label1" for="MAIL"> MAIL* :</label> <br/> 
                       <input class="input2" type="email" name="MAIL" id="MAIL" placeholder="Ex: Lucas.dubois@gmail.com"  maxlength="60" value="<?php if(isset($MAIL)){ echo $MAIL; }?>" />
                     </p>


                     <?php
                       // S'il y a une erreur sur le pseudo alors on affiche
                        if (isset($er_MDP)){
                         echo $er_MDP;
                       }
                     ?>


                     <p>
                       <label class="label1" for="MDP"> MOT DE PASSE* :</label> <br/> 
                       <input class="input2" type="password" name="MDP" id="MDP" maxlength="12"  title=" Le mot de passe doit contenir 12 caractères : chiffres ou lettres" value="<?php if(isset($MDP)){ echo $MDP; }?>"  />
                     </p>


                      <p>
                       <label class="label1" for="MDP2"> CONFIRMATION MOT DE PASSE* :</label> <br/> 
                       <input class="input2" type="password" name="MDP2" id="MDP2" maxlength="12"  title=" Le mot de passe doit contenir 12 caractères : chiffres ou lettres"/>
                     </p>


                     <div class="div4" > <p> * Champs obligatoires </p> </div>
                   </form>
                 </div>


                 <div class="div3"> <p>  <input type="checkbox" id="conditions" name="conditions" />
                     <label for="conditions"><em> En vous inscrivant, vous devenez membre de la famille de sites Gmeet  <br/> et vous avez lu et accepté les conditions d'utilisation et la politique de confidentialité.</em> </label><br/>  </p> 
                  </div>
                
                 <Button class="bouton2" type="submit" id="button" name="INSCRIPTION">Envoyer </Button>
                 <!-- lien du bouton vers une autre page -->
                 <a href="gphymeet-acceuil.php">
                 <input class="bouton1" type="submit" id="button" value="RETOUR" /> </a>
   </body>
</html>


Je met également ma connexion a la BDD même si je pense qu'elle est fonctionnelle, on sait jamais j'ai peut être fait des erreurs :)

connect.php


<?php
  // Déclaration d'une nouvelle classe
  class connect {
    private $host    = '127.0.0.1';   // nom de l'host
    private $name    = 'gphymeet';     // nom de la base de donnée
    private $user    = 'root';        // utilisateur
    private $pass    = 'rokiatou';        // mot de passe
    
    private $connexion;
                    
    function __construct($host = null, $name = null, $user = null, $pass = null){
      if($host != null){
        $this->host = $host;           
        $this->name = $name;           
        $this->user = $user;          
        $this->pass = $pass;
      }
      try{
        $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name,
          $this->user, $this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8', 
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
      }catch (PDOException $e){
        echo 'Erreur : Impossible de se connecter  à la BDD !';
        die();
      }
    }
    // query : gagner un gain de vitesse lorsque vous allez écrire une requête SQLafin d'interroger votre serveur.
    public function query($sql, $data = array()){
      $req = $this->connexion->prepare($sql);
      $req->execute($data);
      return $req;
    }
    // pour inserer des données, modifier ou supprimer
    public function insert($sql, $data = array()){
      $req = $this->connexion->prepare($sql);
      $req->execute($data);
    }
  }
  
  // Faire une connexion à votre fonction
  $DB = new connect();
?>


Merci d'avance :)

632 vues
18 mars 2020 à 18:11 (Édité)
Cette pub permet au site de vivre ...

7 commentaires

Re:


Très bien 😉 Je te conseillerais de supprimer les fichiers inutiles dans un premier temps afin que tu sois mieux organiser dans tes fichiers 😉

Tu n'as pas de messages d'erreur qui apparaissent ? 🤔

Re @Jerem971


Alors dans mon dossier il y a des documents que je n'utilise plus, actuellement toutes les pages que j'utilisent sont en format.php 😉

Merci pour les conseil 😁

Re:


Très bien @ASTIE et bonne initiative d'utiliser XAMPP 😉

Et pour la capture : oui c'est bien cela que je demandais 😉

Alors une question : pourquoi as-tu des fichiers HTML et PHP au même nom ? 🤔

Tu n'es pas obligé de t'y prendre comme cela 😉 L'extension ".php" n'empêche pas l'interprétation du code HTML 😉 Donc je t'aurais plus conseillé de travailler avec des fichiers PHP étant donné que c'est un site web dynamique que tu souhaites faire 😉

Ah et dans ton code, pour le regex du format de l'email, il est préférable d'utiliser celui-ci : /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/ 😉

Hey @Jerem971


J'utilise XAMPP.😀


C'est ça qu'il te faut ?Mes fichiers sont tous dans htdocs

https://goopics.net/i/1qN2N

Hello @ASTIE,


Tout d'abord, tu utilises XAMMP, Wamp ou un autre logiciel similaire ? 🤔

Est-ce que tu peux faire une capture d'écran du répertoire de tes fichiers afin de comparer avec ton code ? 😉 Ca pourrait nous aider 😉 Tu peux nous fournir ta capture d'écran avec GooPics 😉

salut @CrafterHide

J'ai déjà regarder les 2 tutos, ils m'ont d'ailleurs bien aidé pour coder mon inscription mais je ne vois pas de différences avec mon code.

Hey @ASTIE,


Va voir les 2 tutos de sitedudev ( sur yt ) 1er , 2eme

Cette pub permet au site de vivre ...