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

Résolu/Fermé
MUHI100 Messages postés 2 Date d'inscription mercredi 1 novembre 2017 Statut Membre Dernière intervention 7 novembre 2017 - 1 nov. 2017 à 16:58
 MUHI100 - 8 nov. 2017 à 16:30
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
));

?>
A voir également:

1 réponse

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
1 nov. 2017 à 18:01
0
MUHI100 Messages postés 2 Date d'inscription mercredi 1 novembre 2017 Statut Membre Dernière intervention 7 novembre 2017
7 nov. 2017 à 17:00
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
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > MUHI100 Messages postés 2 Date d'inscription mercredi 1 novembre 2017 Statut Membre Dernière intervention 7 novembre 2017
7 nov. 2017 à 17:29
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
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
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > MUHI100
8 nov. 2017 à 10:10
Au passage,
le bloc try catch autour de la "récupération" des variables est inutile.
0
Oui c'est vrai. Merci.
0