Insérer des données dans 2 tables

CharlieG.
Invité n'ayant pas de compte PHPfrance

07 juin 2007, 00:50

Bonjour,


Je souhaiterais savoir comment faire pour insérer des données dans plusiseurs tables.

Je suis en train de réaliser un forum pour lequel j'ai les tables "messages" et "discussion". J'arrive à insérer ce qu'il faut dans ma table "messages" , mais il me faudrait insérer également d'autres données dans la table "discussion" pour que le forum fonctionne, et que tout soit relié.
Seulement je ne sais pas comment exécuter 2 requetes INSERT à la suite pour 2 tables différentes.

J'ai essayé de faire comme ceci:
//création de la requête SQL- insertion des champs dans la BDD 
  $requete = "INSERT INTO message (idMessage, Discussion_idDiscussion, Message_idMessage, Sujet, Contenu, FichierAttache, DateCreation,TypeMessage_idTypeMessage, Qualifiant_idQualifiant, Utilisateur_idUtilisateur) VALUES ('','$idDiscussion','$Message_idMessage','$Sujet','$Contenu','$FichierAttache', now(), '$LibelleTypeMessage', '$LibelleQualifiant','$Utilisateur_idItilisateur')" ;


 $requete .= "INSERT INTO discussion (idDiscussion, Forum_idForum) VALUES ('$idDiscussion', '$Forum_idForum')"; 
    
// exécution de la requête : on envoie la requête au serveur qui nous retourne le résultat 

if ($result = mysql_query ($requete)) 
    { 
    echo "Votre message est enregistré"; 
    } 
else 
{ 
    echo mysql_error(); 
} 
Mais ça ne fonctionne pas.... Merci par avance de votre aide![/php]

Eléphanteau du PHP | 30 Messages

07 juin 2007, 09:14

Pourquoi ne le fais tu pas en 2 requetes ?
Ensuite pour ton message de vérification, si la première requête a fonctionné, tu passes à la seconde et ci cette derrnière a également fonctionné, tu echo ton message.

Non ?
Essayes cela ou alors demande aux maitres du php info ;)

Bon courage :D

Mammouth du PHP | 693 Messages

07 juin 2007, 09:22

IL te manque un point virgule entre tes deux requetes. Sans lui, MySQL considére que c'est une unique requete

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 juin 2007, 10:44

Même avec un point-virgule, cela ne fonctionnerait pas... cf. la doc de la fonction mysql_query() :
mysql_query() envoie une seule requête (les requêtes multiples ne sont pas supportées) à la base de données courante sur le serveur associé avec le link_identifier spécifié.
Donc deux requêtes = deux exécutions... :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...