Bonjour,
J'ai une base de données MYSQL qui répertorie mes livres et qui comporte plusieurs tables dont les trois 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 CLASSIFIE3 comportant comme champs : ID_LIVRE et ID_CATEGORIE
En utilisant la requête suivante :
SELECT L.TITRE, C.NOM_CATEGORIE
FROM LIVRE L
INNER JOIN CLASSIFIE3 A
ON A.ID_LIVRE = L.ID_LIVRE
INNER JOIN CATEGORIE C
ON A.ID_CATEGORIE = C.ID_CATEGORIE
1000 résultats (livres) me sont retournés alors que ma bibliothèque ne contient que 800 livres. Mais c'est normal car un livre peut appartenir à plusieurs catégories. Dans ma page PHP, il y aura donc autant d'occurrences du même livre que de catégories auquel appartient ce livre :
ex : 1- "LE FLEAU"
categorie : A
2- "LE FLEAU"
categorie : B
Ce n'est pas ce que je veux obtenir. Si j'affiche la liste de mes livres, je souhaite qu'il ne s'en affiche que 800 (nombre réel). Pour reprendre l'exemple précédent, je souhaite que le titre "LE FLEAU" n'apparaisse qu'une seule fois mais avec les 2 catégories auquel il appartient :
soit :1- "LE FLEAU"
categorie : A;B
J'ai essayé le code suivant avec 2 requêtes mais cela ne fonctionne pas :
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=bibliosql', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$reponse = $bdd->query('SELECT livre.titre
FROM LIVRE
LIMIT 0,50');
$reponse2 = $bdd->query('SELECT L.TITRE, C.NOM_CATEGORIE
FROM LIVRE L
INNER JOIN CLASSIFIE3 A
ON A.ID_LIVRE = L.ID_LIVRE
INNER JOIN CATEGORIE C
ON A.ID_CATEGORIE = C.ID_CATEGORIE
LIMIT 0,50');
while ($donnees = $reponse->fetch())
{
?>
<p>
<strong>TITRE</strong> : <?php echo $donnees['titre']; ?><br />
</p>
<?php
while ($donnees2 = $reponse2->fetch())
{
?>
<p> <strong>CATEGORIE</strong> : <?php echo $donnees2['NOM_CATEGORIE']; ?><br />
</p>
<?php
}
}
$reponse->closeCursor();
$reponse2->closeCursor();
?>
Cela m'affiche le titre de mon 1er livre, puis toutes les catégories attachées à mes livres (1000), puis cela reprend la liste de mes livres à partir du 2eme et suivants.
Pouvez-m'aider à obtenir ce que souhaite ? Merci d'avance et pardon d'avoir été aussi long.
Almoha