Probléme d'insertion des données dans 3tables !!

Résolu
cs_goldray Messages postés 34 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 29 décembre 2012 - 26 avril 2011 à 05:53
 Utilisateur anonyme - 28 avril 2011 à 22:37
Bonjour,

Salut à tous les membres, j'ai un problème au niveau de l'insertion de données dans 3tables avec MYSQL ...un petit résumé de mes 3tables : un client soit il est une personne physique soit personne morale ... pour cela au niveau de la table client j'ai mis les attributs en commun autre les tables personne physique et celle morale , et à chacune de ces 2tables j'ai mis les attributs spécifiques à chacune de deux ....

sachant que la 1ére table nommé Client :d'attributs :Id_Client(incrémentation automatique de cet attribut),Nom_Client,Tel_Client,GSM_Client,Adresse_Client . cette table est une table mère possédant des attributs communs chez les 2 tables filles ...

la 1ére table fille nommé personne physique d'attributs : CIN_Client,Prenom_Client,Id_client(clé_étrangère) ...

la 2éme table fille nommé personne morale(c.a.d Entreprise) d'attributs :
Matricule_Fiscale,Raison_Sociale,Id_Client(Clé étrangère) ...

Donc après que je clique sur le bouton du formulaire qui permet d'ajouter des champs à soit la table mère et à la table fille 1 ou soit à la table mére et à la table fille 2 ...
voici le code : cible.php
<?php
include("cnx.php");
if ((!empty($cin_client)) AND (!empty($prenom_client)))
{
$req= $bdd->prepare('INSERT INTO clients(Nom_Client,Tel_Client,GSM_Client,Adresse_Client) values(?,?,?,?)');
$req->execute(array($_POST['nom_client'],$_POST['tel_client'],$_POST['gsm_client'],$_POST['adresse_client']));
$req2= $bdd->prepare('INSERT INTO personne_physique(CIN_Client,Prenom_Client,Id_Client) values(?,?,clients.Id_Client)');
$req2->execute(array($_POST['cin_client'],$_POST['prenom_client']));
}
elseif ((!empty($matricule_fiscale)) AND (!empty($raison_sociale)))
{
$req= $bdd->prepare('INSERT INTO clients(Nom_Client,Tel_Client,GSM_Client,Adresse_Client) values(?,?,?,?)');
$req->execute(array($_POST['nom_client'],$_POST['tel_client'],$_POST['gsm_client'],$_POST['adresse_client']));
$req3= $bdd->prepare('INSERT INTO personne_morale(Matricule_Fiscale,Raison_Sociale,Id_Client) values(?,?,clients.Id_Client)');
$req3->execute(array($_POST['matricule_fiscale'],$_POST['raison_sociale']));
}
if ( ( ($req) and ($req2) ) or ( ($req) and ($req3) ) )
{
echo "Ajout est fait";
}
else
{
echo "pas d'ajout";
}

?>


MYSQL ma répondu par un erreur au niveau de la derniere condition avec if(qui est en gras) avec ce message :
Notice: Undefined variable: req in C:\wamp\www\menu_pr\cible.php on line 17

et merci , j'attend vos réponses avec impatience ..

5 réponses

cs_goldray Messages postés 34 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 29 décembre 2012 1
28 avril 2011 à 02:38
@Pylouq ..
j'ai trouvé la solution , puisque il ya une fonction avec le php qui permet d'ajouter le dernier Id d'une table au sein d'une autre table à condition qu'entre ces 2 tables il ya un lien (clé etrangère ) ...etc
3
Utilisateur anonyme
26 avril 2011 à 21:49
A mon avis il n'a pas l'air de trouver ta variable $req.

Essaye de déclarer et d'initialiser ta variable $req = ""; en haut de ton premier IF.

-- Pylouq : jongleur de clavier AZERTY et de clavier QWERTZ --
0
cs_goldray Messages postés 34 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 29 décembre 2012 1
26 avril 2011 à 23:25
voici mon nouveau problème :
je veux insérer 3 requetes en méme temps dans deux tables ....
mais 2requetes se réalisent avec succés mais une ne se réalise pas (c'est la requete $req1) , avec cette requete je veux que la valeur de Id_Client de la table Clients soit insérer au niveau de la table personne_physique , mais ce n'est pas le cas puisque j'aurai comme valeur chez id_Client de la table clients la valeur 1 ...et chez l'autre table j'aurai la valeur 0 !!! or je dois avoir le méme valeur chez les 2 c.a.d la valeur 1 ..... :voici les requetes :

if ((!empty($_POST['cin_client'])) AND (!empty($_POST['prenom_client'])))
{
$req= $bdd->prepare('INSERT INTO clients(Nom_Client,Tel_Client,GSM_Client,Adresse_Client) values(?,?,?,?)');
$req->execute(array($_POST['nom_client'],$_POST['tel_client'],$_POST['gsm_client'],$_POST['adresse_client']));


$req1= $bdd->query('Insert into personne_physique select Id_Client from Clients');
$req2= $bdd->prepare('INSERT INTO personne_physique(CIN_Client,Prenom_Client) values(?,?)');
$req2->execute(array($_POST['cin_client'],$_POST['prenom_client']));
}
0
Utilisateur anonyme
27 avril 2011 à 19:13
J'avoue ne pas avoir compris ton histoire d'ID à 1 et/ou 0 sur tes tables


-- Pylouq : jongleur de clavier AZERTY et de clavier QWERTZ --
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
28 avril 2011 à 22:37
Ok !

Marque ta réponse avec Réponse acceptée pour clore tout ça.

Bonne continuation


-- Pylouq : jongleur de clavier AZERTY et de clavier QWERTZ --
0
Rejoignez-nous