Affichage en Php d'une requête avec jointure

Eléphant du PHP | 281 Messages

29 juil. 2005, 16:17

Bonjour, à tous , ca fait un petit moment que j'ai pas fais un saut ici, j'en profite pour saluer ce qui me reconaisse (lol genre ;) ) Bon alors voilà j'ai un petit problème j'ai 3 tables :

Code : Tout sélectionner

Commissions membres id_com id_membre nom_com nom_membre but_com prenom_membre pres_com appartient id_membre id_com
Donc ca normalement c'est bon , alors je souhaite lister les membres qui font partie d'une commissions choisie, pour cela j'effectue cette requete :

Code : Tout sélectionner

select * from commission,membres,appartient where commission.id_com=$id_com and membres.id_membres=appartient.id_membres and commission.id_com=appartient.id_com
Jusqu'à la c'est toujours bon, ma requête marche sous sql c'est la fête

mainteannt mon soucis c'est comment faire pour afficher le résultat en php, pour le moment mon code ressemble à cela :
$id_com=$_GET['id'];
                           $requete="select * from commission,membres,appartient where commission.id_com=$id_com and membres.id_membres=appartient.id_membres and commission.id_com=appartient.id_com";
                           $result=mysql_query($requete);
                           $tableau=mysql_fetch_array($result);
                           echo "<tr><td class=\"petittitre\">" . $tableau['nom_com'] . "</td></tr>";
                           echo "<tr><td class=\"redaction\">" . $tableau['but_com'] . "</td></tr>";
                           echo "<tr><td class=\"redaction\"><span class=\"petittitre\">Président(e)</span> " . $tableau['president_com']. "</td></tr>";
mais je suis bloqué sur la partie correspondant aux membres, en effet comment je peux faire pour qu'il me mette un membre dans chaque case du tableau, comment va être interpreter le résultat enfaite, je ne comprend pas trop comment faire ! Merci d'avance ;)

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

29 juil. 2005, 16:21

j'en profite pour saluer ce qui me reconaisse
salut :ordi:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 juil. 2005, 16:22

ca fait un petit moment que j'ai pas fais un saut ici, j'en profite pour saluer ce qui me reconaisse (lol genre ;) )
Tout le monde t'a reconnu, d'ailleurs le forum est vide tu as vu tout le monde s'est planqué :lol:

peut-être nous montrer ce que renvoie ta requête, et ce que tu aimerais avoir, nous aiderait à visualiser les choses ;)

heu sinon je n'avais pas vu, tu peux parcourir tes résultats avec une boucle de ce genre :
$result=mysql_query($requete);
while ($donnes = mysql_fetch_array($result)) {
   echo $donnees['nom_d_une_colonne_selectionnee'];
}

Eléphant du PHP | 281 Messages

29 juil. 2005, 16:28

Ben tu vois pour le moment je réfléchi sur papier, j'ai pas encore rempli mes table ni rien mais enfaite pour te donné une idée mon affichage serai un tableau du genre :


Nom de la commission

président : toto

membres :

tutu
titi
tata
kiki
koko


et bien sur selon le click de l'utilisateur,
Et enfaite je me dis que je sais pas comment faire maitenant pour afficher le nombre de membre de chaque commission car il n'est pas fixe, tu comprend le problème ou pas ? je sais pas si je suis très clair :s

p.s : *petite larme de joie ;) :cry: :cry: *

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 juil. 2005, 16:32

et bien c'est le principe de la boucle, tu va parcourir tes lignes de résultats, jusqu'à la dernière et peu importe le nombre, et afficher les données à chaque fois ;)

tu as un exemple ici : http://www.phpdebutant.org/article66.php

avec une autre fonction que celle que je t'ai donné : mysql_fetch_assoc


pour ce qui est du clic de l'utilisateur, tu va juste récupérer une variable, un paramètre et l'insérer dans ta requête. Avec quelques vérifications quand même, du style a-t-elle bien été envoyée, pour éviter une erreur à l'exécution

Eléphant du PHP | 281 Messages

29 juil. 2005, 16:38

Ben celà ressemble à la logique de ce que j'ai déjà fait mais le soucis reste le même a moin que je comprenne vraiment pas là, mais regarde

si maintenant ici je dis

echo $tableau['nom_membre'];

Ma requete va renvoyer je sais pas moi 10 noms de membre et là il va m'en afficher que 1, et je sais pas comment acceder au 9 autres, sachant qu'ils sont sous nom_membres mais dans la commission, non ?
ou si je met mon simple

while (.......)
{
echo $tableau['nom_membre'];
}
il va me faire la liste sous tout ??? je suis sceptique, je comprend pas trop
c'est la première requete que je fais avec jointure sous php, d'hab ca va tout seul avec des requetes plus simples mais là, je suis pas sur de mon résultat, comme pour le moment j'ai pas fait d'essai sur ordinateur donc..

Enfin merci déjà de te pencher sur le soucis ;)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

29 juil. 2005, 16:41

la jointure ne change rien au problème

si tu as déjà affiché des résultats de requête tu devrais t'en sortir

une requête renvoie des lignes de résultats, peu importe comment elle a récupére ces résultats

donc si tu fais

Code : Tout sélectionner

SELECT nom FROM membres
ce code t'affichera tous les noms récupérés
$result = mysql_query();
while ($membre = mysql_fetch_array($result)) {
   echo 'Nom : '.$membre['nom'].'<br>'; // 'nom' car c'est le nom de la colonne que j'ai sélectionné et que je veux afficher
}
la boucle mysql_fetch array va te renvoyer un tableau associatif avec les données de la ligne, puis va poser le curseur à la ligne suivante, donc quand tu referas un tour de boucle, tu auras les infos de la ligne d'après ;)

Eléphant du PHP | 281 Messages

29 juil. 2005, 16:46

mhhh oui...
Mais alors faut que je change mon affichage car dans ma boucle pour le moment y'a uassi l'affichage du nom de la commissions et de son but, donc enfaite faut que je fasse 2 requete séparé sinon mon affichage ca va etre:


nom commissions
but
Membre 1

nom commissions
but
membre 2

etc

je pense que j'ai pas le choix et dois donc utilisé 2 requete !
Je verais bien !!
merci de ton aide !
lundi je met ca en pratique donc je viendrai ici tenir au courant ! ;)