Probléme d'insertion des données dans 3tables !! [Résolu]

Signaler
Messages postés
34
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
29 décembre 2012
-
 Utilisateur anonyme -
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

Messages postés
34
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
29 décembre 2012
1
@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

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 --
Messages postés
34
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
29 décembre 2012
1
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']));
}

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 --

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 --