Insertion dans une base de données mysql
Résolu
aldofkr
Messages postés
35
Date d'inscription
Statut
Membre
Dernière intervention
-
aldofkr Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
aldofkr Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'aurai besoin d'aide pour vérifier mon code php. en effet, jai ecris un code php qui marche à moitié. j'ai créé deux tables dans ma base de données (compte et client). mais quand je met mon code insert, c'est seulement les information du compte qui s'enregistre mais pas ceux de client. je précise aussi que "idcompte " est une clé étrangère dans la table "client". voici le code :
je veux savoir si j'ai fai une erreur quelque part. si oui, précisez mon erreur SVP.
Merci d'avance
j'aurai besoin d'aide pour vérifier mon code php. en effet, jai ecris un code php qui marche à moitié. j'ai créé deux tables dans ma base de données (compte et client). mais quand je met mon code insert, c'est seulement les information du compte qui s'enregistre mais pas ceux de client. je précise aussi que "idcompte " est une clé étrangère dans la table "client". voici le code :
<?php require_once 'connect.php'; $req=$pdo->prepare("INSERT INTO compte SET email= ?, passe= ?"); $reqi=$pdo->prepare("INSERT INTO client SET civilité= ?, nom= ?, prenom= ?, naissance= ?, profession= ?, pièce= ?, numero de pièce= ?, statut= ?, pays= ?, ville= ?, localité= ?, contact= ?, idcompte= ?"); $pwd= password_hash($_POST['pwd'], PASSWORD_BCRYPT); $req->execute([$_POST['mail'], $pwd]); $idcompte= mysql_insert_id(); $reqi->execute([$_POST['civil'], $_POST['nom'], $_POST['prenoms'], $_POST['date'], $_POST['profession'], $_POST['piece'], $_POST['numero'], $_POST['statut'], $_POST['pays'], $_POST['ville'], $_POST['local'], $_POST['contact'], $idcomte]); ?>
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :ICIMerci d'y penser dans tes prochains messages.Jordane45 |
je veux savoir si j'ai fai une erreur quelque part. si oui, précisez mon erreur SVP.
Merci d'avance
A voir également:
- Insertion dans une base de données mysql
- Fuite données maif - Guide
- Base de registre - Guide
- Supprimer les données de navigation - Guide
- Touche insertion clavier - Guide
- Insertion sommaire word - Guide
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
pour commencer, je te suggère d'appliquer ces conseils:
PDO - Gérer les erreurs
pour commencer, je te suggère d'appliquer ces conseils:
PDO - Gérer les erreurs
Bonjour,
En complément du conseil de Yg concernant la gestion des erreurs PDO...
1- Evite d'utiliser des caractères accentués dans le nom de tes champs ( c'est valable pour toutes les variables en fait : nom de la bdd, nom d'une table, variable php, variable javascript... bref.. partout ^^ )
2 - Tu mélanges des instruction mysql avec des instructions pdo.... erreur !
est à remplacer par :
3 - Ta syntaxe d'insert (bien que pas vraiment fausse...) est à éviter.
un INSERT s'écrit proprement ainsi :
4 - Il faut récupérer PROPREMENT les variables AVANT de les utiliser. Surtout lorsqu'il s'agit de variables tableau telles que POST ou GET ( ou SESSION, COOKIE.... )
Pour se faire, tu peux utiliser l'écriture ternaire (sorte de IF/ELSE) de la façon suivante :
tu pourras ensuite utiliser ta variable
Reviens nous voir une fois TOUTES ces corrections effectuées si ton souci persiste.
En complément du conseil de Yg concernant la gestion des erreurs PDO...
1- Evite d'utiliser des caractères accentués dans le nom de tes champs ( c'est valable pour toutes les variables en fait : nom de la bdd, nom d'une table, variable php, variable javascript... bref.. partout ^^ )
2 - Tu mélanges des instruction mysql avec des instructions pdo.... erreur !
$idcompte= mysql_insert_id();
est à remplacer par :
$idcompte= $pdo->lastInsertId();
3 - Ta syntaxe d'insert (bien que pas vraiment fausse...) est à éviter.
un INSERT s'écrit proprement ainsi :
INSERT INTO matable (champ1,champ2,...) VALUES ('valeur1','valeur2','etc..')
4 - Il faut récupérer PROPREMENT les variables AVANT de les utiliser. Surtout lorsqu'il s'agit de variables tableau telles que POST ou GET ( ou SESSION, COOKIE.... )
Pour se faire, tu peux utiliser l'écriture ternaire (sorte de IF/ELSE) de la façon suivante :
$mail = !empty($_POST['mail']) ? $_POST['mail'] : NULL;
tu pourras ensuite utiliser ta variable
Reviens nous voir une fois TOUTES ces corrections effectuées si ton souci persiste.
merci beaucoup. j'ai pu resoudre le problème grâce à vous
<?php
$req=$pdo->prepare("INSERT INTO compte (email, passe) VALUES (:mail, :pwd)");
$reqi=$pdo->prepare("INSERT INTO client (civilite, nom, prenoms, naissance, profession, piece, numeropiece, statut, pays, ville, localite, contact, idcompte) VALUES(:civil, :nom, :prenoms, :date, :profession, :piece, :numero, :statut, :pays, :ville, :local, :contact, :idcompte)");
$pwd= password_hash($pwd, PASSWORD_BCRYPT);
$req->execute(array(':mail'=>$mail, ':pwd'=>$pwd));
$idcompte= $pdo->lastInsertId();
$reqi->execute(array(':civil'=>$civil, ':nom'=>$nom, ':prenoms'=>$pren, ':date'=>$date, ':profession'=>$prof, ':piece'=>$piece, ':numero'=>$num, ':statut'=>$stat, ':pays'=>$pays, ':ville'=>$ville, ':local'=>$local, ':contact'=>$contact, ':idcompte'=>$idcompte));
?>
<?php
$req=$pdo->prepare("INSERT INTO compte (email, passe) VALUES (:mail, :pwd)");
$reqi=$pdo->prepare("INSERT INTO client (civilite, nom, prenoms, naissance, profession, piece, numeropiece, statut, pays, ville, localite, contact, idcompte) VALUES(:civil, :nom, :prenoms, :date, :profession, :piece, :numero, :statut, :pays, :ville, :local, :contact, :idcompte)");
$pwd= password_hash($pwd, PASSWORD_BCRYPT);
$req->execute(array(':mail'=>$mail, ':pwd'=>$pwd));
$idcompte= $pdo->lastInsertId();
$reqi->execute(array(':civil'=>$civil, ':nom'=>$nom, ':prenoms'=>$pren, ':date'=>$date, ':profession'=>$prof, ':piece'=>$piece, ':numero'=>$num, ':statut'=>$stat, ':pays'=>$pays, ':ville'=>$ville, ':local'=>$local, ':contact'=>$contact, ':idcompte'=>$idcompte));
?>