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

  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 =-
    0
    1. et comment faut faire pour insérer des données d'un formulaire par la meme methode??
      0
      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!!
        0
        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 =-
          0
          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!!
            0
            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 =-
              0
              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. "
                0
                1. je ne vois pas comment ça va s'y retrouver dans les ID?
                  0
                  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?
                    0
                    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 =-
                      0
                      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 =-
                        0
                        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??
                          0
                          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 =-
                            0
                            1. et s'il ya deux sortes d'identifiants....cad, il ya des identifiants définis auparavant et d'autres non définis???
                              0
                              1. et comment ça marche pour la derniere requete??
                                0
                                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!!!
                                  0
                                  • 1
                                  • 2