BDD non remplie, sans message d'erreur

Résolu
salutcoucou Messages postés 11 Statut Membre -  
salutcoucou Messages postés 11 Statut Membre -
Bonjour à tous. Je crée un formulaire d'inscription à mon association. Lorsque je remplie le formulaire, aucun message d'erreur n'apparaît, mais ma BDD reste vide. Voici mon code, merci d'avance pour vos réponse
<form action="" method="POST">
   

    <div id="Nom">
     <input type="text" name="Nom" placeholder="Nom" required="">
    </div>


    <div id="Prenom">
     <input type="text" name="Prenom" placeholder="Prenom" required="">
    </div>


    <div id="Valider">
     <input type="submit" value="Valider">
    </div>


    <div id="Adresse">
     <input type="text" name="Adresse" placeholder="Adresse" required="">
    </div>


    <div id="Civilite">
     <select name="Civilite" id="Civilite">
      <option value="Monsieur">Monsieur</option>
      <option value="Madame">Madame</option>
     </select>
    </div>


    <div id="Mail">
     <input type="email" name="Mail" placeholder="Adresse mail" required="">
    </div>


    <div id="tel">
     <input type="tel" name="tel" placeholder="Numero de telephone" required=""> 
    </div>


    <div id="profession">
     <input type="text" name="profession" placeholder="Profession" required="">
    </div>

  </form>

 <?php

$bdd = new PDO("mysql:host=localhost;dbname=graines_de_seine", "root", "");


if (isset($_POST['civilite']) AND isset($_POST['nom']) AND isset($_POST['prenom']) AND isset($_POST['adresse']) AND isset($_POST['adressemail']) AND isset($_POST['telephone']) AND isset($_POST['profession']))

 $civilite = isset($_POST['Civilite']) ? $_POST['Civilite'] : NULL;
 $nom = isset($_POST['nom']) ? $_POST['nom'] : NULL;
 $prenom = isset($_POST['prenom']) ? $_POST['prenom'] : NULL;
 $adresse = isset($_POST['adresse']) ? $_POST['adresse'] : NULL;
 $adressemail = isset($_POST['adressemail']) ? $_POST['adressemail'] : NULL;
 $telephone = isset($_POST['telephone']) ? $_POST['telephone'] : NULL;
 $profession = isset($_POST['profession']) ? $_POST['profession'] : NULL;



$insertmbr = $bdd->prepare("INSERT INTO formulaire(civilite, nom, prenom, adresse, adressemail, telephone, profession) VALUES(?, ?, ?, ?, ?, ?, ?)");
 $insertmbr->execute(array($civilite, $nom, $prenom, $adresse, $adressemail, $telephone, $profession));

   ?>


EDIT : AJOUT DES BALISES DE CODE

1 réponse

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

    1 - Affiche l'activation des erreurs PHP
    error_reporting(E_ALL);
    ini_set('display_errors',1);
    


    2 - Active la gestion des erreurs PDO
    https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

    3 - Places des ECHO dans ton code (dans ton IF par exemple pour voir si tu rentres bien dedans) et fais éventuellement un
    print_r($_POST);
    en début de ton code pour voir ce qu'envoie ton formulaire

    En suivant ces 3 points tu devrais être en mesure de trouver ton erreur...

    Si tu n'y arrives pas... et bien :

    4 - Et enfin... la solution à ton souci :

    Vu que dans ton IF tu regardes si les variables existent (par exemple isset($_POST['prenom']) )
    Et que dans ton formulaire HTML tu as mis :
         <input type="text" name="Prenom" placeholder="Prenom" required="">
    


    Prenom <> prenom
    donc tu ne rentres jamais dans ton if ....;
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Voici ton code corrigé et remis en forme :

      1 - Place le code de connexion à ta BDD dans un fichier à part que tu n'auras plus qu'à inclure dans tes différentes pages au lieu de le réécrire à chaque fois
      <?php
      // fichier de connexion à la BDD : cnxBdd.php
      try{
        $bdd = new PDO('mysql:host=localhost;dbname=graines_de_seine; charset=utf8', 'root', '');
        $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
      } catch(PDOException $e) {
          die('Erreur : ' . $e->getMessage());
      }
      ?>
      


      2 - Le reste de ton code
      NB: On place le PHP en début de code en général... AVANT le HTML.
      Cela le rend plus lisible... surtout lorsque tu auras des pages web avec 500 lignes :-)

       <?php
      //Affichage des erreurs PHP
       error_reporting(E_ALL);
      ini_set('display_errors',1);
       
      // Connexion à la bdd 
      require_once "cnxBdd.php";
      
      //récupération "propre" des variables AVANT de les utiliser
       $civilite = isset($_POST['Civilite']) ? $_POST['Civilite'] : NULL;
       $nom = isset($_POST['nom']) ? $_POST['nom'] : NULL;
       $prenom = isset($_POST['prenom']) ? $_POST['prenom'] : NULL;
       $adresse = isset($_POST['adresse']) ? $_POST['adresse'] : NULL;
       $adressemail = isset($_POST['adressemail']) ? $_POST['adressemail'] : NULL;
       $telephone = isset($_POST['telephone']) ? $_POST['telephone'] : NULL;
       $profession = isset($_POST['profession']) ? $_POST['profession'] : NULL;
      
       
       //traitement du formulaire
      if ($civilite && $nom && $prenom && $adresse && $adressemail && $telephone && $profession){
      
        //préparation de la requête et des variables
        $sql = "INSERT INTO formulaire(civilite, nom, prenom, adresse, adressemail, telephone, profession) VALUES(?, ?, ?, ?, ?, ?, ?)";
        $datas = array($civilite, $nom, $prenom, $adresse, $adressemail, $telephone, $profession);
       
        //Execution de la requete
        try{
          $requete = $bdd -> prepare($sql) ;
          $requete->execute($datas) ;
        }catch(Exception $e){
          // en cas d'erreur :
          echo " Erreur ! ".$e->getMessage();
          echo " Les datas : " ;
          print_r($datas);
        }
      
      }
      ?>
      <form action="" method="POST">
        <div id="div_nom">
          <input type="text" name="nom" placeholder="Nom" required="">
        </div>
        <div id="div_prenom">
          <input type="text" name="prenom" placeholder="Prenom" required="">
        </div>
        <div id="div_adresse">
          <input type="text" name="adresse" placeholder="Adresse" required="">
        </div>
        <div id="div_Civilite">
          <select name="Civilite" id="Civilite">
            <option value="Monsieur">Monsieur</option>
            <option value="Madame">Madame</option>
          </select>
        </div>
        <div id="adressemail">
          <input type="email" name="adressemail" placeholder="Adresse mail" required="">
        </div>
        <div id="telephone">
          <input type="tel" name="telephone" placeholder="Numero de telephone" required=""> 
        </div>
        <div id="profession">
          <input type="text" name="profession" placeholder="Profession" required="">
        </div>
        <div id="div_Valider">
          <input type="submit" value="Valider">
        </div>
      </form>
      
      0
    2. salutcoucou Messages postés 11 Statut Membre
       
      Je tient a vous remercier, j'étais coincé et je commençais à peter un cable :)
      Merci beaucoup, ça fonctionne !!!

      :)
      0