par
@rthur » 26 févr. 2020, 02:34
Il y a plusieurs façon de faire, ça dépend de la taille de ta table et si tu as beaucoup de thèmes différents.
Si tu n'as pas beaucoup de thème, tu pourrais faire celà en 2 phases :
1) tu récupères la liste des thèmes sans doublon en SQL, grâce à la fonction GROUP BY
https://sql.sh/cours/group-by
2) ensuite tu fais une boucle foreach() et pour chaque thème récupéré, tu fais une autre requête SQL avec un SELECT pour récupérer les noms associés à chaque thème
Cette approche fonctionne bien si tu as pas beaucoup de thèmes différents.
Si tu as beaucoup de thèmes (plusieurs centaines), alors cela va générer beaucoup de requêtes SQL et le plus efficace sera alors probablement de faire une seule requête qui récupère tout, et ensuite un traitement PHP qui ferait les actions suivantes :
1) tu initialises un tableau vide par exemple $data=array();
2) tu fais une boucle sur chaque ligne de ta table avec foreach() ou while() comme tu veux
3) au sein de la boucle tu fais $data[$theme][]=$nom pour créer un tableau multidimensionnel qui va contenir chaque thème et pour chaque thème un tableau avec les noms
4) A la fin de ta boucle de traitement tu as juste à afficher $data, déjà via un var_dump($data) pour vérifier que tu obtiens bien ce que tu veux et ensuite avec des boucles foreach() si tu veux faire une présentation propre.
Il y a plusieurs façon de faire, ça dépend de la taille de ta table et si tu as beaucoup de thèmes différents.
Si tu n'as pas beaucoup de thème, tu pourrais faire celà en 2 phases :
1) tu récupères la liste des thèmes sans doublon en SQL, grâce à la fonction GROUP BY https://sql.sh/cours/group-by
2) ensuite tu fais une boucle foreach() et pour chaque thème récupéré, tu fais une autre requête SQL avec un SELECT pour récupérer les noms associés à chaque thème
Cette approche fonctionne bien si tu as pas beaucoup de thèmes différents.
Si tu as beaucoup de thèmes (plusieurs centaines), alors cela va générer beaucoup de requêtes SQL et le plus efficace sera alors probablement de faire une seule requête qui récupère tout, et ensuite un traitement PHP qui ferait les actions suivantes :
1) tu initialises un tableau vide par exemple $data=array();
2) tu fais une boucle sur chaque ligne de ta table avec foreach() ou while() comme tu veux
3) au sein de la boucle tu fais $data[$theme][]=$nom pour créer un tableau multidimensionnel qui va contenir chaque thème et pour chaque thème un tableau avec les noms
4) A la fin de ta boucle de traitement tu as juste à afficher $data, déjà via un var_dump($data) pour vérifier que tu obtiens bien ce que tu veux et ensuite avec des boucles foreach() si tu veux faire une présentation propre.