Pas d'enregistrements après un Insert en PHP avec Mysql. [Résolu/Fermé]

Signaler
Messages postés
2
Date d'inscription
mercredi 1 novembre 2017
Statut
Membre
Dernière intervention
7 novembre 2017
-
 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

Messages postés
32999
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 juin 2021
3 569
Messages postés
2
Date d'inscription
mercredi 1 novembre 2017
Statut
Membre
Dernière intervention
7 novembre 2017

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
Messages postés
32999
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 juin 2021
3 569 >
Messages postés
2
Date d'inscription
mercredi 1 novembre 2017
Statut
Membre
Dernière intervention
7 novembre 2017

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://www.commentcamarche.net/faq/46512-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
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.
Messages postés
32999
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 juin 2021
3 569 > MUHI100
Au passage,
le bloc try catch autour de la "récupération" des variables est inutile.
Oui c'est vrai. Merci.