Page 1 sur 1

Imbrication de requêtes?

Posté : 21 août 2008, 17:14
par Stef
Bonjour à tous!!

je planche depuis des heures sur le problème suivant (avant de vous gausser rappelez vous que je suis un débutant :) ):

j'ai 2 tables dans bdd =

"MEMBRES" Celle-ci sert a enregistrer les membres qui s'inscrivent
Image

"AURAPOST"
Celle-ci enregitre les messages qu'ils postent sur le site
Image

(Le formulaire d'envoi des messages récupère le nom du membre qui post, ce qui fait que le champs 'username' de la 1ère table et le champ 'auteur' de la 2ème sont identiques!)

Maintenant mon problème c'est que j'aimerais trouver le code qui me permet d'effectuer une réquête listant tous les membres dans la 1ère table et affichant pour chacun tous leurs messages postés (enregistrés dans la 2ème table).
J'ai commencé à fire ça:

Code : Tout sélectionner

<?php mysql_connect("localhost", "root", "****") or die(mysql_error()); mysql_select_db("bdd"); $reponse = mysql_query("SELECT * FROM users"); while ($donnees = mysql_fetch_array($reponse) ) { ?> <?php echo $donnees['username']; ?> a posté: <br /> <?php $query = sprintf("SELECT titre, message, date FROM aurapost "); $result = mysql_query($query); if (!$result) { $message = 'Requête invalide : ' . mysql_error() . "\n"; $message .= 'Requête complète : ' . $query; die($message); } while ($row = mysql_fetch_assoc($result)) { ?> <p> Titre: <?php echo $row['titre']; ?><br /> Message: <?php echo $row['message']; ?><br /> Date: <?php echo $row['date']; ?> </p> <br /> <?php } ?> <?php mysql_free_result($result); ?> <?php } ?> ?>
Mais ça marche pas... ça me renvoie bien effectivement les différents membres, mais pour chacun tous les messages postés par tous les auteurs, alors que je voudrais que pour chaque membre apparaissent uniquement les messages qu'il a posté...
Je sais pas si c'est clair :?

Merci d'avance pour votre aide précieuse!! :)

Posté : 21 août 2008, 17:29
par guilt92
C'est tout à fait normal.

Dans ta seconde requete tu ne prends pas en compte ton auteur...
Il faudrait ajouter une clause WHERE pour dire :

Selectionner les message ou AUTEUR = auteur_en_cours ...
Tu as les variables qu'il faut, c'est juste cette requete à compléter :)

Posté : 22 août 2008, 11:24
par Stef
Effectivement, en fait j'ai testé ça 2min après avoir posté ce sujet en faisant:

Code : Tout sélectionner

$query = sprintf("SELECT titre, message, date FROM aurapost WHERE auteur = '".$donnees['username']."' ");
Beh ça marche dis donc :shock: :D

Pas facile le php quand tu pars de zero et que t'apprends tout sur le tas... m'enfin j'me suis offert "PHP5 & MYSQL5" de Lionel Isolda et Stéphane Magne (ed. Micro Application), et j'ai de quoi potasser.
Bref, php me plait de plus en plus et en plus ça m'encourage à avancer dans mon apprentissage de Ruby (sur le tas, pareil :? (quant à Rails j'verrais ça quand je serais plus à l'aise avec php et ruby)).

Merci Guilt d'avoir jetez un oeil sur ma demande!! :wink:

Posté : 22 août 2008, 12:40
par agité
Tu pourrais aussi mettre dans ta table aurapost un champ avec l'id de l'utilisateur directement type Id_membre.

Posté : 22 août 2008, 20:25
par Stef
Hum ok...

pfiou, j'ai le cerveau qui fume avec tout ce que j'ai à assimiler :D