Insertion avec mysql

loulou -  
 loulou -
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
  • 2
  1. Bobinours Messages postés 2903 Statut Membre 504
     
    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
  2. loulou
     
    et comment faut faire pour insérer des données d'un formulaire par la meme methode??
    0
  3. loulou
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Bobinours Messages postés 2903 Statut Membre 504
     
    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
  6. loulou
     
    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
  7. Bobinours Messages postés 2903 Statut Membre 504
     
    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
  8. loulou
     
    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
  9. loulou
     
    je ne vois pas comment ça va s'y retrouver dans les ID?
    0
  10. loulou
     
    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
  11. Bobinours Messages postés 2903 Statut Membre 504
     
    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
  12. Bobinours Messages postés 2903 Statut Membre 504
     
    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
  13. loulou
     
    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
  14. Bobinours Messages postés 2903 Statut Membre 504
     
    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
  15. loulou
     
    et s'il ya deux sortes d'identifiants....cad, il ya des identifiants définis auparavant et d'autres non définis???
    0
  16. loulou
     
    et comment ça marche pour la derniere requete??
    0
  17. loulou
     
    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