menu alphabétique dynamique

Eléphant du PHP | 57 Messages

27 oct. 2006, 21:58

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.

Mammouth du PHP | 1511 Messages

27 oct. 2006, 23:04

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.
@+

ViPHP
ViPHP | 1961 Messages

27 oct. 2006, 23:23

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.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 oct. 2006, 00:24

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

ViPHP
ViPHP | 1961 Messages

28 oct. 2006, 01:09

Bonsoir,
@Truc
Comme je l'ai lu QQ part dans le forum, tu est vraiment tombé dedans quand tu étais petit.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 oct. 2006, 15:07

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:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 57 Messages

29 oct. 2006, 16:07

Merci Truc, c'est effectivement une requête très simple et efficace.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

29 oct. 2006, 16:31

Nous le disons tous les jours :
"C'est effectivement un truc très simple et efficace." :langue:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

29 oct. 2006, 16:53

Conseil numéro 1 :

Image

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute