Version complète: sur le forum Webmaster Hub : Affichage d'une jointure
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
gilles6975
Bonjour à tous. J'ai un petit problème de débutant que je n'arrive pas à résoudre b_thumbsdown_20.gif

Données :
- 1 table sql agence
- 1 table sql agent

Objectif : afficher via php pour chaque agence les agents qui y sont affectés. La donnée commune entre les 2 tables est le nom de l'agence.

Voila ce que j'ai fait dans mon php :
CODE
$sql = " SELECT *
           FROM agence
                JOIN agent
                      ON agence.nom_agence=agent.nom_agence
           ORDER BY agence.ville ASC";
  
$req = mysql_query($sql) or die ("erreur sql !<br />".$sql."<br />".mysql_error());

    //affichage des données:
    while( $result = mysql_fetch_object( $req ) )
    {
       echo("
                   <h3>".$result->agence."</h3>
                   <blockquote>
                   <p>".$result->adresse."</p>
                   <p>".$result->code_postal."</p>
                   <p>".$result->ville."</p>
                   [b]<p>".$result->nom_agent." ".$result->prenom_agent."</p>[/b]
                   <p>Téléphone : ".$result->telephone." - Fax : ".$result->fax."</p>
                   <p><a href=\"".$result->site."\" title=\"acces au site externe\">".$result->site."</a></p>
                   </blockquote>\n");
    }


Le problème est que je n'arrive pas a afficher le nom de l'agence avec tous les agents présents dans cette agence. A chaque agent différent cela refait une fiche. Du coup les agences sont en n-uplons.

Je pense qu'il faudrait faire une boucle sur la ligne nom_agent (en gras) mais je n'y arrive pas.

Si quelqu'un pouvait me donner une piste merci d'avance.
tonsite
Il te faut faire une boucle agent dans une boucle agence. Dans ta boucle agent tu filtres par l'id agence de l'agent. Evidement lorsque tu ajoutes un agent il faut que tu enregistres l'id de son agence.

Il y a peut être une meilleur solution mais je ne connais que celle-ci.
gilles6975
Pour la boucle je suis ok sur le principe mais je n'arrive pas a l'ecrire.

Faut il que je sorte du echo et que je refasse une requete ? Ca me arait bizarre.

Chaque agent a une et une seule agence donc la ca ne pose pas de problème.

Merci d'essayer de m'aider.
NorSeb
Bonjour,

Le principe le plus simple consiste à comparer, dans ta boucle, le nom de l'agence en cours avec le nom de l'agence précédente (donc il faut stocker le nom de l'agence précédente). Si les deux sont différents alors tu affiches le nom de l'agence, sinon tu passe...
gilles6975
je comprends l'idée mais je vois pas comment la réaliser.

Il faut que je rajoute une condition dans cette partie du code ?

CODE
while( $result = mysql_fetch_object( $req ) )


mon idée je déclare une variable temporaire :

CODE
$agencetmp='agence.nom_agence'
while ($agencetmp<>0)
echo (" ".result->nom_agent." ")


j'avoue être un peu perdu sur le coup nonono.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.