Insertion avec mysql

salut à tous!!!

c'est encore moi!!
comment faire pour insérer des données dans une bd quand il y a plusieurs tables???

23 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut,
    Il faut faire plusieurs insertion.

    $result = mysql_query("INSERT INTO table1 (champ1, champ2, ...) VALUES ('valeur1', "valeur2', ...)") or die(mysql_error());

    $result = mysql_query("INSERT INTO table2 (champ1, champ2, ...) VALUES ('valeur1', "valeur2', ...)") or die(mysql_error());

    -= Bobinours - http://bobin.underlands.org =-
    1. et comment faut faire pour insérer des données d'un formulaire par la meme methode??
      1. ben je veux faire la meme chose mais avec des données à insérer dans plusieurs tables!!! mais je vois pas comment faut faire!!
        1. Bon...
          En partant du formulaire du lien, tu as 3 champs : Nom, Email et Message.

          Je désire insérer Nom et Email dans une table 1 et Message dans une table 2.

          Je me connecte à la base : http://www.php.net/manual/fr/function.mysql-connect.php

          Je choisi la base : http://www.php.net/manual/fr/function.mysql-select-db.php

          Je fais la première requête :

          $Requete_SQL1 = "INSERT INTO Table1 (nom, email) VALUES ('" . $nom . "', '" . $email . "')";
          mysql_query($Requete_SQL1);

          $Requete_SQL2 = "INSERT INTO Table2 (message) VALUES ('".$message."')";
          mysql_query($Requete_SQL2);

          Et voila.

          -= Bobinours - http://bobin.underlands.org =-
          1. bon ben on va compliquer un peu plus!!! mes deux tables ne sont pas reliées directement. en fait, c'est une autre table qui les relient!!
            1. L'insertion n'a rien à voir avec plusieurs tables (comme les jointures).

              Cependant, si tu veux récupérer les identifiants insérés, pour les lier dans une 3ème table, il te faut utiliser : http://php3.de/manual/fr/html/function.mysql-insert-id.html

              En règle générale, pour chaque table, on utilise un champ ID qui est AUTOINCREMENT afin de ne pas s'occuper de sa valeur.

              Lors de l'insertion, on aura juste à lui passer une valeur NULL pour que MySQL s'occupe du reste.

              Ne connaissant donc pas sa valeur, il faut la récupérer grace à mysql_insert_id().

              Tu fais une requête, tu récupères l'ID 1, tu fais la seconde requête, tu récupères l'ID 2

              Et enfin, tu fais une troisième requête en insérant ID1 et ID2 dans la table relation.

              Pour reprendre l'exemple ce dessus :

              $Requete_SQL1 = "INSERT INTO Table1 (ID, nom, email) VALUES (NULL, '" . $nom . "', '" . $email . "')";
              mysql_query($Requete_SQL1);
              $ID1 = mysql_insert_id();

              $Requete_SQL2 = "INSERT INTO Table2 (ID, message) VALUES (NULL, '".$message."')";
              mysql_query($Requete_SQL2);
              $ID1 = mysql_insert_id();

              $Requete_SQL3 = "INSERT INTO Table3 (ID_table1, ID_table2) VALUES ('".$ID1."','".$ID2."')";
              mysql_query($Requete_SQL3);

              -= Bobinours - http://bobin.underlands.org =-
              1. je comprends pas pourquoi tu met ça :
                " Lors de l'insertion, on aura juste à lui passer une valeur NULL pour que MySQL s'occupe du reste. "
                1. est-ce que si j'insere une donnée dans la table 1 et une autre dans la table 2 ; est-ce quelles seront insérées automatiquement dans la 3° table?
                  1. Car pour les ID en AUTO-INCREMENT, il faut insérer NULL comme valeur de ce champ. MySQL va prendre le dernier indice qu'il a rentré précédemment et lui ajouter 1, tout ça automatiquement.

                    S'il te manque des documentation à ce sujet, va voir le site de http://www.mysql.com

                    -= Bobinours - http://bobin.underlands.org =-
                    1. Aïe...

                      J'ai l'impression que les codes que j'écris ne servent à rien.

                      Non, la table 3 n'a aucun rapport. Il faut préciser que l'on veut faire une insertion dans cette table d'où mon :

                      $Requete_SQL3 = "INSERT INTO Table3 (ID_table1, ID_table2) VALUES ('".$ID1."','".$ID2."')";
                      mysql_query($Requete_SQL3);

                      $ID1 et $ID2 ayant étaient récupérés au préalable.

                      -= Bobinours - http://bobin.underlands.org =-
                      1. merci, je comprends mieux!!! par contre mes champs ne peuvent pas etre en autoincrement parce que les numéros serons déja définis auparavant. comment ça marche dans ce cs??
                        1. Dans ce cas, c'est encore plus simple :

                          // On définit les ID

                          $ID1 = "101";
                          $ID2 = "651";

                          $Requete_SQL1 = "INSERT INTO Table1 (ID, nom, email) VALUES ('". $ID1 ."', '" . $nom . "', '" . $email . "')";
                          mysql_query($Requete_SQL1);

                          $Requete_SQL2 = "INSERT INTO Table2 (ID, message) VALUES ('". $ID2 ."', '".$message."')";
                          mysql_query($Requete_SQL2);

                          $Requete_SQL3 = "INSERT INTO Table3 (ID_table1, ID_table2) VALUES ('".$ID1."','".$ID2."')";
                          mysql_query($Requete_SQL3);

                          -= Bobinours - http://bobin.underlands.org =-
                          1. et s'il ya deux sortes d'identifiants....cad, il ya des identifiants définis auparavant et d'autres non définis???
                            1. ah zut!!! va yavoir un pb vu que les id qui sont définis auparavant sont enregistré lors du remplissage de la bd!!! ça complique tout!!!
                              • 1
                              • 2