Bonjour,
J'ai une base de données MYSQL qui répertorie mes livres et qui comporte plusieurs tables dont les suivantes :
- 1 table LIVRE comportant notamment comme champs : ID_LIVRE et TITRE
- 1 table CATEGORIE comportant comme champs : ID_CATEGORIE et NOM_CATEGORIE (c-a-d roman, document, essais etc)
- 1 table CLASSIFIE comportant comme champs : ID_LIVRE et ID_CATEGORIE
- 1 table GENRE comportant comme champs : ID_GENRE et NOM_GENRE (c-a-d thriller, polar, SF etc)
- 1 table THEMATISE comportant comme champs : ID_LIVRE et ID_GENRE
Pour avoir des lignes de résultat du style,
titre categories genres
-------------------------------------------------------------------
Titre 1 Categorie 2|Categorie 4 Genre 1|Genre 3
j'utilise dans ma requête GROUP_CONCAT :
Voilà pour la partie SQL. Je coince sur la partie gestion de l'affichage en PHP.
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
26
27
28
29 <?php try { $bdd = new PDO('mysql:host=localhost;dbname=bibliosql', 'root', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $reponse = $bdd->query('SELECT L.TITRE AS titre, GROUP_CONCAT(DISTINCT C.NOM_CATEGORIE SEPARATOR '|') AS categories, GROUP_CONCAT(DISTINCT G.NOM_GENRE SEPARATOR '|') AS genres FROM LIVRE L INNER JOIN CLASSIFIE A ON A.ID_LIVRE = L.ID_LIVRE INNER JOIN CATEGORIE C ON A.ID_CATEGORIE = C.ID_CATEGORIE INNER JOIN THEMATISE T ON T.ID_LIVRE=L.ID_LIVRE INNER JOIN GENRE G ON G.ID_GENRE = T.ID_GENRE GROUP BY L.id_livre ORDER BY L.TITRE LIMIT 0,500');
1) Comment récupérer les différentes valeurs du champ TITRE ? Grâce à foreach ?
2) Concernant la récupération des différentes valeurs sur les champs NOM_CATEGORIE et NOM_GENRE, je crois qu'il faut utiliser explode et foreach ?
Je précise que je suis un débutant n'ayant aucune pratique. Pouvez-vous m'aider à écrire le code permettant de gérer l'affichage souhaité ? Merci d'avance.
Partager