Pas d'enregistrements après un Insert en PHP avec Mysql.

Résolu
MUHI100 Messages postés 2 Statut Membre -  
 MUHI100 -
Bonjour tout le monde !

J'apprends à développer avec PHP , MySQL avec Wamp sous Windows 10.

Avec le code ci-dessous tout ce passe comme normal sans message d'erreur et pourtant rien n'est enregistré dans la table tbclient.

Je recours à votre aide et merci d'avance.

<?php

//variables de connexion à la BDD
$hote = 'localhost';
$uti = 'root';
$mpas = '';
$nbdd = 'dbjoyaux';

//connexion à la BDD
try
{
$Conx = new PDO("mysql:host=$hote;dbname=$nbdd", $uti, $mpas);
}
catch( PDOException $Exception )
{
echo "Erreur !<br>";
echo $Exception->getMessage();
echo $Exception->getCode();
exit();
}

//récupération des variables du formulaire:
try
{
$pren = isset($_POST['pren']);
$nom= isset($_POST['nom']);
$datn = isset($_POST['datn']);
$adres = isset($_POST['adres']);
$Idcli='';
}
catch( PDOException $Exception )
{
echo "Erreur !<br>";
echo $Exception->getMessage();
echo $Exception->getCode();
exit();
}

// préparation de la requête :

$sql = $Conx->prepare('INSERT INTO tbclient(PrenCli,NomCli,Datnais,Adresse) VALUES (:Pren,:Nom,:Datn,:Adres)');
$sql->execute(array(
':Pren' => $pren,
':Nom' => $nom,
':Datn' => $datn,
':Adres' => $adres
));

?>

1 réponse

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

      J'ai vérifié le fichier php.ini, il est OK.
      J'ai ajouté les 3 lignes dans mon code pour activer l'affichage des erreurs mais le problème reste le même: pas de message d'erreurs et pas d'enregistrements dans la table.

      Cordialement.

      Alfred
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > MUHI100 Messages postés 2 Statut Membre
         
        OK...

        mais la réupération des données ???*
        Là tu as écrits :
        $pren = isset($_POST['pren']);
        $nom= isset($_POST['nom']);
        $datn = isset($_POST['datn']);
        $adres = isset($_POST['adres']); 
        

        Autant dire que tes lignes ne sont pas complètes ....

        Et ensuite .. tu pourras passer à ceci :
        https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

        C'est à dire :
        - placer CHAQUE requêtes dans des blocs TRY CATCH
        - activer la gestion des erreurs dans la connexion à ta bdd (la connexion PDO)
        - Placer le code de connexion dans un fichier à part que tu incluras dans ta page


        Une fois tout ça mis en place... postes nous le code corrigé.
        NB : Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
        Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
        0
    2. MUHI100
       
      Les problèmes sont résolus.
      Après avoir suivi toutes vos directives, les messages d'erreur s'affichent et après correction, les données sont bel et bien enregistrées dans la table.

      <?php
      //affichage des erreurs php
      error_reporting(E_ALL);
      ini_set('display_errors', TRUE);
      ini_set('display_startup_errors', TRUE);


      //connexion à la BDD
      include("CdConnexBD.php");

      //récupération des variables du formulaire:
      try
      {
      $pren = !empty($_POST['pren']) ? $_POST['pren'] : NULL;
      $nom = !empty($_POST['nom']) ? $_POST['nom'] : NULL;
      $datn = !empty($_POST['datn']) ? $_POST['datn'] : NULL;
      $adres = !empty($_POST['adres']) ? $_POST['adres'] : NULL;
      //$Idcli='';
      }
      catch( PDOException $Exception )
      {
      echo "Erreur !<br>";
      echo $Exception->getMessage();
      echo $Exception->getCode();
      exit();
      }
      echo $pren;
      echo $nom;
      echo $datn;
      echo $adres;

      // préparation de la requête :

      $sql = "INSERT INTO tbclient(PrenCli,NomCli,Datnais,Adresse) VALUES (:Pren,:Nom,:Datn,:Adres)";

      $datas=array(
      ':Pren' => $pren,
      ':Nom' => $nom,
      ':Datn' => $datn,
      ':Adres' => $adres
      );

      // Execution de la requette
      try
      {
      $req = $Conx -> prepare($sql);
      $req -> execute($datas);
      }
      catch(Exception $e)
      {
      //en cas d'erreur dans la requete ::
      echo "Erreur ! ".$e->getMessage()."<br>";
      echo "datas :<br>";
      print_r($datas);
      echo "</pre>";
      }
      ?>


      Merci beaucoup Jordane.
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > MUHI100
         
        Au passage,
        le bloc try catch autour de la "récupération" des variables est inutile.
        0
    3. MUHI100
       
      Oui c'est vrai. Merci.
      0