Divers

Génération d’un index A-Z selon le contenu de ma base de données

0

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.

Share

L’éléphpant PHP

Je suis content car je viens de recevoir mon éléphpant PHP. Merci à Damien pour cette belle initiative. Vous pouvez le commander sur le site de nexen.net

Share
Haut de page