salut,
Le truc c'est que ton département à une région et que la région à plusieurs département, donc ils vont forcément tous t'indiquer leur région.
je suppose que tu as une jointure sur une table département et une sur une table région ? (genre pour avoir les libellés ?
si ta requête retourne les données que tu souhaites c'est un bon début, le reste c'est de l'affichage.
C'est normale que tu imposes de prendre 10 enregistrements à partir du 20ème ? il ne manquerait des marqueurs pour une pagination ?
il ne manquerait pas un group by dans ta requête sql ? (genre pour avoir le nombre de loisir par département ?).
pour l'affichage il faut ajouter un peu d'intelligence au contenu de ton while.
La plus simple c'est d'avoir une variable, en dehors du while, qui va contenir le nom de la région précédente (disons $oldRegion

).
dans le while tu vérifies si la région courante (dans $ligne['id_region']) est différent de $oldRegion. si c'est le cas tu affiches la région, et $oldRegion prend la valeur courante de $ligne['id_region'].
c'est pas plus compliqué que cela. pour obtenir le résultat que indique tu va devoir jouer un peu avec les balise html mais rien de complexe (dl, dt, dd etc.
https://www.w3.org/TR/html401/struct/lists.html).
@+