Page 1 sur 1

Insérer des données dans 2 tables

Posté : 07 juin 2007, 00:50
par CharlieG.
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]

Posté : 07 juin 2007, 09:14
par kpn59
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

Posté : 07 juin 2007, 09:22
par orgerix
IL te manque un point virgule entre tes deux requetes. Sans lui, MySQL considére que c'est une unique requete

Posté : 07 juin 2007, 10:44
par Ryle
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... :)