Je suis le webmaster d'un webzine musical.
Les chroniques du site sont stockées dans une table (musicreviews), je voudrais que sur la page du site qui les liste, elles apparaissent rangées par initiale.
J'ai deux problèmes :
- si je fais une boucle en prenant les initiales stockées dans "musicreviews" (on renseigne les initiales pour chaque groupe chroniqué, si vous avez une idée de comment récupérer l'initiale directement, n'hésitez pas
- C
Cult of luna
- M
Monolithe
- C
Celeste
- si je fais une table qui contient l'alphabet, il m'affiche tout l'alphabet, y compris les lettres ne correspondant à aucun groupe. Je me retrouve donc avec des espaces vides, ce que je ne veux pas
Voici mon code actuel, correspondant à celui avec la table alphabet :
Code : Tout sélectionner
<?php
$req1 = $bdd->query('SELECT lettre FROM alphabet');
while($donnees1 = $req1->fetch())
{
echo "<h4>- [".$donnees1['lettre']."]</h4>";
$req = $bdd->prepare('SELECT id, annee, nomgroupe, nomalbum, initiale FROM musicreviews WHERE lettre = :lettre AND lang = :lang ORDER BY initiale, annee');
$req->execute(array('lettre' => $donnees1['lettre'], 'lang' => $lang));
while ($donnees = $req->fetch())
{
?><a style="margin-left:2%;" href="musicreviewspage.php?id=<?php echo $donnees['id']; ?>"><?php
echo $donnees['nomgroupe']." - ".$donnees['nomalbum']."<br/>";
?></a><?php
}
}
?>