Bonjour,
J'ai une base de données avec notamment ces tables :
- 1 table FONCTION comportant comme champs : id_fonction et nom_fonction
- 1 table CONTRIBUTEURS comportant comme champs : id_contributeur, nom_contributeur, prenom_contributeur
- 1 table LIVRE comportant comme champs notamment : id_livre, titre ...
- 1 table PARTICIPE comportant comme champs : id_contributeur, id_fonction et id_livre
Suite au conseil avisé de CinePhil, j'utilise la requête suivante :
En utilisant le code suivant (personnel) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT L.TITRE AS titre, CB.NOM_CONTRIBUTEUR AS contributeurs, F.NOM_FONCTION AS fonctions FROM LIVRE L INNER JOIN PARTICIPE P ON P.ID_LIVRE = L.ID_LIVRE INNER JOIN CONTRIBUTEURS CB ON CB.ID_CONTRIBUTEUR = P.ID_CONTRIBUTEUR INNER JOIN FONCTION F ON F.ID_FONCTION = P.ID_FONCTION ORDER BY L.TITRE, F.NOM_FONCTION, CD.NOM_CONTRIBUTEUR
L'affichage obtenu est du style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 foreach($reponse as $row){ $titre = $row['titre']; $contributeurs = $row['contributeurs']; $fonctions = $row['fonctions']; // affichage du titre echo '<br/><h3>'.$titre.'</h3><br/>'; // affichage des fonctions : auteur, traducteur echo $fonctions . ' '; // affichage des contributeurs : identité de l'auteur, traducteur echo $contributeurs . ' '; echo '<br />'; } ?>
[TITRE] / [NOM_CONTRIBUTEUR] / [NOM_FONCTION]
'MYSERY' / 'KING' / 'Auteur'
'MYSERY' / 'BACHMAN' / 'Auteur'
'MYSERY' / 'Breque' / 'Traducteur'
Ce n'est pas l'affichage escompté. C'est plutôt :
TITRE : MYSERY
AUTEUR : KING; BACHMAN
TRADUCTEUR : BREQUE
CinePhil m'a déconseillé l'utilisation des GROUP-CONCAT dans ma requête et des explode car très gourmands en ressources...
Pouvez-vous m'aider à construire l'affichage souhaité conformément aux consignes de CinePhil ? Merci d'avance.CinePhil a écrit : Ton programme PHP doit parcourir le tableau et construire l'affichage à chaque changement de fonction pour un même titre et à chaque titre. ..[] La requête sera beaucoup plus rapide à exécuter sans le groupage sur un grand nombre de lignes et PHP est bien outillé pour parcourir les tableaux de résultat et éventuellement concaténer les chaînes de caractères extraites de ce tableau.
Partager