Page 1 sur 1

menu alphabétique dynamique

Posté : 27 oct. 2006, 21:58
par mankind
Salut,

J'aimerais faire un menu alphabétique du type :
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

Quand on clique sur une lettre on affiche tous les articles dont le titre commence par la lettre correspondante).

J'aimerais que dans ce type de menu, les lettres qui ne conduiraient à aucun résultat ne soient pas actives (ex : pas de lien vers la page d'affichage).

Pour l'instant, pour afficher les résultats je passe la lettre en paramètre et dans la page d'affichage je fais une requête du genre : SELECT... WHERE titre LIKE '".$lettre."%'

J'imagine qu'on ne va pas faire 26 requêtes différentes pour savoir s'il existe un titre commençant par la lettre A puis un commençant par la lettre B etc.... jusqu'à Z.

Comment faire donc avec une seule requête pour identifier les premières lettres des titres disponibles dans la base et afficher un menu variable en conséquence.

Le mieux serait même peut-être de repérer les lettres disponibles ou tout autre caractère (je pense à un article qui commence par un chiffre par exemple).

Quelle méthode employer pour ne pas surcharger le serveur avec une multitude de requêtes.

Merci pour votre aide.

Posté : 27 oct. 2006, 23:04
par momox
Affiche toutes les lettres en redirigeant de telle sorte : mapage.php?lettre=x
Ensuite, tu fais ta requete avec ton LIKE, et si aucun résultat, tu affiche un message disant qu'il n'y a aucun résultat.
@+

Posté : 27 oct. 2006, 23:23
par Ajoloca
Bonsoir,

Une autre façon de faire c'est de conserver QQ part (base ou fivhier) la liste des lettres qui on aux moins 1 entrée. Le charger dans un tableau.

A la contruction du menu avec un simple
in_array()
tu lui mets un lien ou pas.

Posté : 28 oct. 2006, 00:24
par Truc
Dans l'idée d'Ajoloca ... mais en récupérant les lettre depuis une requête :

Code : Tout sélectionner

SELECT DISTINCT(LEFT(UPPER(champ_titre),1)) FROM table
Remplace par les noms qui vont bien et regarde le résultat.

ensuite regarder si la lettre affichée (boucle sur l'alphabet) est dans ce résultat.

Posté : 28 oct. 2006, 01:09
par Ajoloca
Bonsoir,
@Truc
Comme je l'ai lu QQ part dans le forum, tu est vraiment tombé dedans quand tu étais petit.

Posté : 28 oct. 2006, 15:07
par Truc
Bonsoir,
@Truc
Comme je l'ai lu QQ part dans le forum, tu est vraiment tombé dedans quand tu étais petit.
Je suis toujours petit :)
On n'en sait jamais assez :wink:

Posté : 29 oct. 2006, 16:07
par mankind
Merci Truc, c'est effectivement une requête très simple et efficace.

Posté : 29 oct. 2006, 16:31
par albat
Nous le disons tous les jours :
"C'est effectivement un truc très simple et efficace." :langue:

Posté : 29 oct. 2006, 16:53
par Truc
Conseil numéro 1 :

Image