Imp Posté 2 Avril 2006 Partager Posté 2 Avril 2006 Bonjour, Je cherche à afficher d'une certaine manière une bibliographie à partir d'une table MySQL via PHP. Là où le problème se pose, c'est que je voudrais regrouper tous les titres du même auteur C'est à dire avoir <dl> <dt>Victor HUGO</dt> <dd>Titre 1</dd> <dd>Titre 2</dd> <dt>Auteur suivant</dt> <dd>Titre 3</dd></dl> et non pas comme j'ai en ce moment <dl> <dt>Victor HUGO</dt> <dd>Titre 1</dd> <dt>Victor HUGO</dt> <dd>Titre 2</dd> <dt>Auteur suivant</dt> <dd>Titre 3</dd></dl> A vrai dire je ne sais pas du tout comment faire. Si j'utilise GROUP BY, le titre 2 n'apparait pas. J'ai l'impression qu'il faudrait faire un boucle dans dans une boucle, mais là je n'arrive pas à le mettre en place. Quelqu'un pourrait il me mettre sur la voie ? Bonne journée Lien vers le commentaire Partager sur d’autres sites More sharing options...
KaRaK Posté 2 Avril 2006 Partager Posté 2 Avril 2006 Bonjour, Normalement le Group By devrait marcher. Tu peux afficher ta requête stp ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Compte supprimé Posté 2 Avril 2006 Partager Posté 2 Avril 2006 tu ne change rien à ta requête sql, mais dans ta boucle php tu définit un variable $auteur_courant. si l'auteur est différent tu l'affiche : echo "<dl>"; foreach ($tab as $row) { if ($row[auteur]!=$auteur_courant) { echo "\n<dt>".$row[auteur]."</dt>"; $auteur_courant=$row[auteur]; } print"\n\t<dd>".$row[titre]."</dd>"; } echo "</dl>"; un truc comme ça quoi. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Imp Posté 2 Avril 2006 Auteur Partager Posté 2 Avril 2006 (modifié) Merci Jeroen de m'avoir expliqué le principe : je viens d'essayer avec quelque chose de ce style et ça marche parfaitement ! A+ Modifié 2 Avril 2006 par Imp Lien vers le commentaire Partager sur d’autres sites More sharing options...
Imp Posté 23 Mai 2006 Auteur Partager Posté 23 Mai 2006 (modifié) Bonjour, Je remonte un peu ce sujet car je me suis demandé s'il serait possible de faire un double classement : La bibliographie est classée par nom d'auteur. Mais comment serait-il possible que la liste des livres de chaque auteur soit également classée, par date par exemple. Il me semble qu'avec ce système ce n'est pas possible Voilà ce que je voudrais : <dl><dt>Victor HUGO</dt> <dd>Livre le plus ancien</dd> <dd>Livre le plus récent</dd><dt>Auteur suivant</dt> <dd>Titre 3</dd></dl> Faut il que j'oublie cette idée de double classement ou y a-t-il une possibilité ? Modifié 23 Mai 2006 par Imp Lien vers le commentaire Partager sur d’autres sites More sharing options...
NorSeb Posté 23 Mai 2006 Partager Posté 23 Mai 2006 Bonjour, Cela dépend de l'origine des données mais en gros il va falloir les classer "à la source" de sorte que l'affichage ne soit plus qu'une formalité. Si tu utilise une base de données, tu peux mettre plusieurs paramètres de tri. Par exemple : ORDER BY auteur, date classera par auteur puis par date Lien vers le commentaire Partager sur d’autres sites More sharing options...
Imp Posté 24 Mai 2006 Auteur Partager Posté 24 Mai 2006 Merci.. j'ai un peu honte car je ne savais même pas qu'on pouvait ainsi mettre plusieurs paramètres de tri ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 25 Mai 2006 Partager Posté 25 Mai 2006 Laisser faire mysql pour ce genre de problématique, c'est classer les éléments en C++ au lieu de les classer en php. Autrement dit, ca va (normalement) netttement plus vite. Rares sont les bases de données plus sollicitées que les sites eux memes, et c'est un net avantage de faire une requète un tant soit plus complexe, mais au final un résultat qui s'affichera vraiment plus vite. Enfin...à mon avis. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant