Signaler

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

Posez votre question MUHI100 2Messages postés mercredi 1 novembre 2017Date d'inscription 7 novembre 2017 Dernière intervention - Dernière réponse le 8 nov. 2017 à 16:30 par 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
));

?>
Utile
+0
plus moins
Bonjour

Commence par ça :
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code
MUHI100 2Messages postés mercredi 1 novembre 2017Date d'inscription 7 novembre 2017 Dernière intervention - 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
Répondre
jordane45 18756Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 9 novembre 2017 Dernière intervention - 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 :
http://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 : http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Répondre
MUHI100- 8 nov. 2017 à 00:54
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.
Répondre
jordane45 18756Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 9 novembre 2017 Dernière intervention - 8 nov. 2017 à 10:10
Au passage,
le bloc try catch autour de la "récupération" des variables est inutile.
Répondre
MUHI100- 8 nov. 2017 à 16:30
Oui c'est vrai. Merci.
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !