Insertion avec mysql

Fermé
loulou - 22 janv. 2003 à 10:30
 loulou - 22 janv. 2003 à 16:57
salut à tous!!!

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

23 réponses

Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
22 janv. 2003 à 10:34
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
et comment faut faire pour insérer des données d'un formulaire par la meme methode??
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
22 janv. 2003 à 11:32
Je ne comprends pas ta question.

Regarde là si ça y répond : http://bobin.underlands.org/tutorial/enregistrer1.php

-= Bobinours - http://bobin.underlands.org =-
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
22 janv. 2003 à 11:48
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
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
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
22 janv. 2003 à 12:27
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
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
je ne vois pas comment ça va s'y retrouver dans les ID?
0
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
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
22 janv. 2003 à 13:46
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
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
22 janv. 2003 à 13:52
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
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
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
22 janv. 2003 à 14:56
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
et s'il ya deux sortes d'identifiants....cad, il ya des identifiants définis auparavant et d'autres non définis???
0
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
22 janv. 2003 à 15:15
Dans ce cas, tu mixes les deux techniques.

-= Bobinours - http://bobin.underlands.org =-
0
et comment ça marche pour la derniere requete??
0
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
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
22 janv. 2003 à 15:34
Ah mince...
Dans ce cas ce n'est pas possible :o)
a+

-= Bobinours - http://bobin.underlands.org =-
0
kooooooiiiiiiii!!!!!!!!!!!!
0