Que vous dire de plus ?
Génération d’un index A-Z selon le contenu de ma base de données
Dans ce mini article, je vais vous montrer la manière utilisée pour réaliser une liste A-Z avec des hyperliens sur certaines lettres. Je réalise une requête sql me récupérant uniquement la première lettre de chaque titre et de manière unique puis je construis un tableau me permettant de contrôler l’existence de celle-ci dans ma boucle.
Index à produire:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Fonction réalisée dans mon modèle:
$results = Doctrine_Query::create()
->select('r.id, SUBSTRING(t.name,1,1) letter')
->from('Resource r')
->where()
->orderBy('t.name')
->groupBy('t.name')
->execute();
$letters = array();
foreach($results AS $result)
{
$letters[] = $result->letter;
}
return $letters;
Je reçois en retour un tableau avec les lettres disponibles.
Génération de la liste dans mon Template:
<?php for($i = 65; $i < 91; $i++): ?> <?php $letter = strtoupper(chr($i)); ?> <?php echo (in_array($letter, $results)) ? link_to($letter, '/resources/index') : $letter; if($i < 91) { echo " "; } ?> <?php endfor; ?>
J’espère que cet exemple vous sera utile dans un de vos développements.
| Imprimer l'article | Cette entrée a été posté par Bertrand Zuchuat le 15 octobre 2008 à 20:01, et placée dans Divers. Vous pouvez suivre les réponses à cette entrée via RSS 2.0. Vous pouvez aller directement à la fin et laisser une réponse. Le ping n'est pas autorisé pour le moment. |