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 :

Insérer dans deux tables différentes [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 153
    Points : 47
    Points
    47
    Par défaut Insérer dans deux tables différentes
    Bonjour j'ai un grand formulaire avec 34 champs , et comme ce n'est pas trop évident de mettre toutes les informations dans une seule bdd, j'ai préféré partagé le formulaire en 3 avec un numéro (clé primaire ).
    la ma bdd : suivi_fiche_dintervention
    ma première table : fichesuividintervention1
    ma deuxième table : fichesuividintervention2
    ma troisième table : intervenants
    La première partie du formulaire (numero , code , date ...) je l'ai réussi à l'insérer dans ma bdd, là je suis bloqué au niveau de la deuxième table, je veux que ma deuxième partie du formulaire soit aussi intégrée dans la 2eme table, ma deuxième partie contient comme chap (impact , conditions_particuliere), donc je ne sais pas dans cette table est-ce que je dois mettre numéro qui est clé primaire dans la 1ere table en clé étrangère ou quoi !!!!!
    Je veux bien un code qui soit simple
    merci :d

  2. #2
    Membre éclairé Avatar de Dsphinx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2005
    Messages
    1 082
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 082
    Points : 884
    Points
    884
    Par défaut
    Salut, tu effectues le meme traitement que la procédure d'insertion des premières données pour les données de la deuxième table. A savoir, récupération des données, controler et vérification des données et insertion dans ta base (tu changes le nom de ta table ainsi que les champs de ta table dans ta deuxième requête et normallement c'est OK.)

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 153
    Points : 47
    Points
    47
    Par défaut
    Non je pense que c est pas possible , parce que la deja dans le formualire en action javais mis le add1.php , donc ce me dirige directement vers la premiere insertion , donc c est pas le cas pour la deuxieme .
    autre question , est ce que je met "numero" comme clé primiare dans la deuxieme table ?

  4. #4
    Membre habitué Avatar de greg13
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 144
    Points : 156
    Points
    156
    Par défaut
    s'il y a une clé ID (auto incrément) dans la première table je suppose qu'il faut conserver ce numéro dans la deuxieme table afin d'établir la correspondance pour pouvoir reconstituer "l'enregistrement complet". Donc je suppose insertion dans la première récupération de l'id qui a été utilisé et insertion dans la deuxieme avec l'id de la première. et donc pas d'auto incrément dans la deuxieme. J pense que si on fait pas ça, ça peut etre risqué de plus savoir quelle ligne de la première correspond à laquel de la deuxième.

    EDIT : donc une colonne numéro dans la première (auto inc) et une colonne numéro dans la deuxieme aussi(pas auto inc).

    Greg

  5. #5
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 153
    Points : 47
    Points
    47
    Par défaut
    ca c'est bon je l'ai fait , j ai mis numero dans la deuxieme table sans incerementation .
    par contre oendant le code d insertion je sais pas quand est ce que ca va etre different par rapport a la premiere , normalent il doit y avoir une varibale ki recupere le "numero" et l affecter a une autre variable , un truc comme ca

  6. #6
    Membre habitué Avatar de greg13
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 144
    Points : 156
    Points
    156
    Par défaut
    tu dois utiliser la fonction mysql_insert_id() pour récupérer l'id automatique du dernier enregistrement ajouté. ensuite tu utilise ce numero pour l'insertion dans la deuxieme table.

  7. #7
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 153
    Points : 47
    Points
    47
    Par défaut
    Oui excuse moi , mais je voudarias savoir d abord , pour le code d insertion ca va etre sur la meme page de la premiere insertion ou je me trompe ??

  8. #8
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 153
    Points : 47
    Points
    47
    Par défaut
    pour faciliter la tache je te copi le code de la premiere insertion et celui de la deuxieme aussi , stp , est ce que tu peux me montrer ou exactement je met le deuxieme code

    Premiere insertion :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <?php
     
    if(isset($_POST['commentaire1']))      $commentaire1=$_POST['commentaire1'];
    else      $commentaire1="";
     
    if(isset($_POST['commentaire2']))      $commentaire2=$_POST['commentaire2'];
    else      $commentaire2="";
     
    if(isset($_POST['commentaire3']))      $commentaire3=$_POST['commentaire3'];
    else      $commentaire3="";
     
    if(isset($_POST['numero']))      $numero=$_POST['numero'];
    else      $numero="";
     
    if(isset($_POST['code']))      $code=$_POST['code'];
    else      $code="";
     
    if(isset($_POST['date']))      $date=$_POST['date'];
    else      $date="";
     
    if(isset($_POST['plage_horaire']))      $plage_horaire=$_POST['plage_horaire'];
    else      $plage_horaire="";
     
    if(isset($_POST['responsable']))      $responsable=$_POST['responsable'];
    else      $responsable="";
     
    if(isset($_POST['motif']))      $motif=$_POST['motif'];
    else      $motif="";
     
    if(isset($_POST['description_operation']))      $description_operation=$_POST['description_operation'];
    else      $description_operation="";
     
    if(isset($_POST['description_intervention']))      $description_intervention=$_POST['description_intervention'];
    else      $description_intervention="";
     
     
     
    $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
     
        mysql_select_db('suivi_fiche_dintervention',$db)  or die('Erreur de selection '.mysql_error());
     
        $sql = "INSERT INTO fichesuividintervention1(commentaire1, commentaire2, commentaire3, numero, code, date, plage_horaire, responsable, motif, description_operation, description_intervention) VALUES('$commentaire1','$commentaire2','$commentaire3', '$numero','$code','$date','$plage_horaire', '$responsable', '$motif', '$description_operation','$description_intervention')";
     
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
        // on affiche le résultat pour le visiteur
        echo 'Vos infos on été ajoutées.';
     
        mysql_close();  // on ferme la connexion
      //  } 
    ?>

    deuxieme insertion
    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
    25
    26
    <?php
     
    if(isset($_POST['description_intervention']))      $description_intervention=$_POST['description_intervention'];
    else      $description_intervention="";
     
    if(isset($_POST['remarques']))      $remarques=$_POST['remarques'];
    else      $remarques="";
     
    if(isset($_POST['bilan']))      $bilan=$_POST['bilan'];
    else      $bilan="";
     
    $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
     
        mysql_select_db('suivi_fiche_dintervention',$db)  or die('Erreur de selection '.mysql_error());
     
        $sql = "INSERT INTO fichesuividintervention2(description_intervention, remarques, bilan) VALUES('$description_intervention','$remarques','$bilan')";
     
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
    		$numero = mysql_insert_id(); 
        // on affiche le résultat pour le visiteur
        echo 'Vos infos on été ajoutées.';
     
        mysql_close();  // on ferme la connexion
      //  } 
    ?>

  9. #9
    Membre habitué Avatar de greg13
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 144
    Points : 156
    Points
    156
    Par défaut
    Oui si j'ai bien compris tu as un seul formulaire. Donc un fichier php pour toutes tes insertions.

    Ca donneraait ça :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    <?php
     
    if(isset($_POST['commentaire1']))      $commentaire1=$_POST['commentaire1'];
    else      $commentaire1="";
     
    if(isset($_POST['commentaire2']))      $commentaire2=$_POST['commentaire2'];
    else      $commentaire2="";
     
    if(isset($_POST['commentaire3']))      $commentaire3=$_POST['commentaire3'];
    else      $commentaire3="";
     
    if(isset($_POST['numero']))      $numero=$_POST['numero'];
    else      $numero="";
     
    if(isset($_POST['code']))      $code=$_POST['code'];
    else      $code="";
     
    if(isset($_POST['date']))      $date=$_POST['date'];
    else      $date="";
     
    if(isset($_POST['plage_horaire']))      $plage_horaire=$_POST['plage_horaire'];
    else      $plage_horaire="";
     
    if(isset($_POST['responsable']))      $responsable=$_POST['responsable'];
    else      $responsable="";
     
    if(isset($_POST['motif']))      $motif=$_POST['motif'];
    else      $motif="";
     
    if(isset($_POST['description_operation']))      $description_operation=$_POST['description_operation'];
    else      $description_operation="";
     
    if(isset($_POST['description_intervention']))      $description_intervention=$_POST['description_intervention'];
      else      $description_intervention="";
     
      if(isset($_POST['remarques']))      $remarques=$_POST['remarques'];
      else      $remarques="";
     
      if(isset($_POST['bilan']))      $bilan=$_POST['bilan'];
      else      $bilan="";
     
    $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
     
        mysql_select_db('suivi_fiche_dintervention',$db)  or die('Erreur de selection '.mysql_error());
     
    	$sql = "INSERT INTO fichesuividintervention1(commentaire1, commentaire2, commentaire3, numero, code, date, plage_horaire, responsable, motif, description_operation, description_intervention) VALUES('$commentaire1','$commentaire2','$commentaire3', '$numero','$code','$date','$plage_horaire', '$responsable', '$motif', '$description_operation','$description_intervention')";
     
    	mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
      //  } 
     
      $numero = mysql_insert_id($db); 
     
      $sql = "INSERT INTO fichesuividintervention2(numero, description_intervention, remarques, bilan) VALUES('$numero', '$description_intervention','$remarques','$bilan')";
     
      mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
     
        // on affiche le résultat pour le visiteur
    			echo 'Vos infos on été ajoutées.';
     
    	mysql_close();  // on ferme la connexion
      //  } 
     
     
      ?>
    J'ai supposé que tu as un champs numero dans la deuxième table. Je vois aussi que tu enregistres deux fois description_intervention. C'est pas une très bonne idée d'enregistrer deux fois la même infos dans la base de données.

    Greg

  10. #10
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 153
    Points : 47
    Points
    47
    Par défaut
    C'est bon j'ai rajputé quelques petites modifs et ca a marche ?
    donc si je veux une troisieme table je fais pareil?? :d
    merci bcp

  11. #11
    Membre habitué Avatar de greg13
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 144
    Points : 156
    Points
    156
    Par défaut
    Pour une troisieme table, tu dois juste a rajouter deux lignes comme ceci avant le mysql_close :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     $sql = "INSERT INTO fichesuividintervention3(numero, ...) VALUES('$numero', ...)";
     
      mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    biensur il faut adapter pour la troisieme table et les infos a sauver dedans, pour le numero, aucun probleme c'est le meme que dans la deuxieme table donc rien a faire, juste réutiliser la variable.
    Bonne continuation, si tout va bien, tu peux ajouter mettre le tag Résolu.

    Greg

  12. #12
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 153
    Points : 47
    Points
    47
    Par défaut
    Merci c est tres gentil voila je le met en resolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Multiples INSERT dans deux tables diffèrentes
    Par pcsystemd dans le forum Débuter
    Réponses: 2
    Dernier message: 16/06/2009, 07h50
  2. Réponses: 2
    Dernier message: 30/04/2009, 12h46
  3. Réponses: 10
    Dernier message: 17/04/2009, 17h19
  4. Réponses: 2
    Dernier message: 10/04/2009, 14h34
  5. données dans deux tables différentes
    Par [Hugo] dans le forum Langage SQL
    Réponses: 9
    Dernier message: 09/11/2007, 12h51

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