IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

problème d'insertion de données dans 3 tables


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Inscrit en
    Avril 2011
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 135
    Points : 221
    Points
    221
    Par défaut problème d'insertion de données dans 3 tables
    Bonjour,

    Salut à tous les membres, j'ai un problème au niveau de l'insertion de données dans 3 tables avec MYSQL ...un petit résumé de mes 3 tables : 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 2 tables j'ai mis les attributs spécifiques à chacune de deux ....

    sachant que la 1re table nommée 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 1re table fille nommée 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
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?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 dernière 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'attends vos réponses avec impatience ..

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <?php
    include("cnx.php");
     
    if (isset($_POST['cin_client']) && !empty($_POST['cin_client']) && isset($_POST['prenom_client']) && !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']));
    	$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']));
    	echo "Ajout fait";
    }
    elseif (isset($_POST['matricule_fiscale']) && !empty($_POST['matricule_fiscale']) && isset($_POST['raison_sociale']) && !empty($_POST['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']));
    	echo "Ajout fait";
    }
    else
    {
    echo "pas d'ajout";
    }
    ?>
    comme ça?

    tu initialise req req2 et req3 dans un if et tu le test en dehors..

    j'ai rajouté au passage un isset pour tester si ta variable post existe avant de tester si elle est vide sinon tu peux avoir des null pointer..
    Stay in Bed .. Save Energy

  3. #3
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    include("cnx.php");
    if ((!empty($cin_client)) AND (!empty($prenom_client)))
    {
        $req= ....
    }
    elseif ((!empty($matricule_fiscale)) AND (!empty($raison_sociale)))
    {
        $req= ...
    }
    if ( ( ($req) and ($req2) ) or ( ($req) and ($req3) ) )
    {
        ...
    }
    Si "$cin_client" et "$raison_sociale" sont vides, il se passe quoi ? $req n'existe pas !

    A toi de modifier ton script en conséquence.
    Par ailleurs, les $_POST directement dans la requête ? Sérieux ?
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  4. #4
    Membre actif
    Inscrit en
    Avril 2011
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 135
    Points : 221
    Points
    221
    Par défaut
    salut ,
    @boo64
    chez ta proposition ,toujours il ya un message qui affiche "ajout fait" mais pas d'ajout réelement !! .....

    j'ai modifié mon code comme tu m'a dit mais le probléme que l'insertion se fait juste pour la requete $req mais ni $req2 ni $req3 est réalisé
    je crois le probléme c'est au niveau de l'insertion du Id_Client dans soit la table personne_physique soit la table personne_morale ..puisque cet attribut :
    par exemple pour la requete $req2 voici son code ...:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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']));
    }





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

    et merci

Discussions similaires

  1. Problème d'insertion de données dans ma table
    Par flilou dans le forum Zend_Db
    Réponses: 10
    Dernier message: 05/10/2011, 17h23
  2. Réponses: 2
    Dernier message: 18/03/2010, 13h31
  3. [Oracle] problème d'insertion de données dans une table sous oracle
    Par Zombiman dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/05/2009, 14h58
  4. problème d'insertion de données dans table
    Par loic20h28 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 31/01/2008, 17h26
  5. [MySQL] Problème d'insertion de données dans table d'associations
    Par Yukhaa dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 07/02/2006, 17h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo