Ta structure de table est correcte donc pour résoudre le problème.
Il faut modifier la requête, je ne m'aventurerai cependant pas dedans moi même, j'ai très peu de connaissances SQL et je risquerai de faire une usine à gaz (pour exemple il ne m'est encore jamais arrivé de faire une aussi grosse requête que la tienne).
Mais dans l'esprit il te faut récupérer les id et les noms dans les deux groupes (fonction et contributeurs).
Ensuite boucler afin d'obtenir une structure de donnée de ce genre (par exemple) :
// fonctions
array( 'id_fonction' => 'nom_fonction', 'id_fonction2' => 'nom_fonction2');
// contributeurs
array( 0 => array( 'nom_contributeur', 'id_fonction'), 1 => array( 'nom_contributeur2', 'id_fonction2') )
Ensuite on peut traiter le second array pour l'affichage :
array( 'id_fonction' => array(... /* liste des noms des contributeurs de type id_fonction */), ...);
Bien sûr on peut aussi construire directement l'array final dès la première boucle.
Après c'est tout simple :
foreach($mon_array_final as $id_fonction => $liste_contributeur)
{
echo $mon_array_fonction[$id_fonction]; // Le nom de la fonction
foreach($liste_contributeur as $nom)
echo $nom; // Le nom du contributeur
echo "<br />"; // On change de fonction donc retour à la ligne
}
En espérant que quelqu'un vienne à ton secours pour la requête.

Ta structure de table est correcte donc pour résoudre le problème.
Il faut modifier la requête, je ne m'aventurerai cependant pas dedans moi même, j'ai très peu de connaissances SQL et je risquerai de faire une usine à gaz (pour exemple il ne m'est encore jamais arrivé de faire une aussi grosse requête que la tienne).
Mais dans l'esprit il te faut récupérer les id et les noms dans les deux groupes (fonction et contributeurs).
Ensuite boucler afin d'obtenir une structure de donnée de ce genre (par exemple) :
[php]// fonctions
array( 'id_fonction' => 'nom_fonction', 'id_fonction2' => 'nom_fonction2');
// contributeurs
array( 0 => array( 'nom_contributeur', 'id_fonction'), 1 => array( 'nom_contributeur2', 'id_fonction2') )[/php]
Ensuite on peut traiter le second array pour l'affichage :
[php]array( 'id_fonction' => array(... /* liste des noms des contributeurs de type id_fonction */), ...); [/php]
Bien sûr on peut aussi construire directement l'array final dès la première boucle.
Après c'est tout simple :
[php]foreach($mon_array_final as $id_fonction => $liste_contributeur)
{
echo $mon_array_fonction[$id_fonction]; // Le nom de la fonction
foreach($liste_contributeur as $nom)
echo $nom; // Le nom du contributeur
echo "<br />"; // On change de fonction donc retour à la ligne
}[/php]
En espérant que quelqu'un vienne à ton secours pour la requête. :)