Aller au contenu

Affichage d'une jointure


Sujets conseillés

Posté

Bonjour à tous. J'ai un petit problème de débutant que je n'arrive pas à résoudre :thumbsdown:

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 :

$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.

Posté

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.

Posté

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.

Posté

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...

Posté

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 ?

 while( $result = mysql_fetch_object( $req ) )

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

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

j'avoue être un peu perdu sur le coup :nonono:

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...