BDD non remplie, sans message d'erreur [Résolu/Fermé]

Signaler
Messages postés
11
Date d'inscription
vendredi 11 novembre 2016
Statut
Membre
Dernière intervention
6 août 2017
-
Messages postés
11
Date d'inscription
vendredi 11 novembre 2016
Statut
Membre
Dernière intervention
6 août 2017
-
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

Messages postés
32986
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 juin 2021
3 562
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://www.commentcamarche.net/faq/46512-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 ....;
Messages postés
32986
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 juin 2021
3 562
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>
Messages postés
11
Date d'inscription
vendredi 11 novembre 2016
Statut
Membre
Dernière intervention
6 août 2017

Je tient a vous remercier, j'étais coincé et je commençais à peter un cable :)
Merci beaucoup, ça fonctionne !!!

:)