[Résolu] Opérateur MySQL pour menu alphabétique ?

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
GizMecano
Lézard à collerette
Messages : 416
Inscription : 02 août 2004, 20:27

[Résolu] Opérateur MySQL pour menu alphabétique ?

Message par GizMecano »

Hello,

Désolé si je suis limite hors sujet, mais je ne parviens pas à trouver la réponse par ailleurs, sans doute parce que je formule mal ma recherche. :?

Je recherche l'opérateur qui permet de trouver dans une base MySQL tous les mots commençant par la même lettre afin de pouvoir créer un menu sous forme d'annuaire alphabétique, annuaire qui se compose automatiquement selon les entrées de la table.

Hélas, je ne parviens pas à mettre la main dessus. :?

Merci d'avance pour tout aide.

Ciao,
Dernière modification par GizMecano le 03 mai 2005, 22:11, modifié 1 fois.
GizMecano.net
http://gizmecano.net
Avatar de l’utilisateur
pascal
Administrateur
Messages : 1515
Inscription : 28 juil. 2003, 15:13

Message par pascal »

SELECT champ1, champ2 FROM matable ORDER BY champ1 DESC

si tu veux inverser le tri tu mets ASC au lieu de DESC
Avatar de l’utilisateur
pascal
Administrateur
Messages : 1515
Inscription : 28 juil. 2003, 15:13

Message par pascal »

A bien y réfléchir, si tu veux générer un truc du type :

A
Albator
Albatre
Albatros

B

Butée
But
Butoir

Il te faudra plus qu'un simple Opérateur SQL :)
GizMecano
Lézard à collerette
Messages : 416
Inscription : 02 août 2004, 20:27

Message par GizMecano »

Hello,

En fait, je me suis mal exprimé, c'est un peu plus compliqué :?

Mais effectivement, il me faudra sans doute plus qu'un seul opérateur.

Ce que je voudrais, en fait, c'est un peu ce que peut faire l'opérateur DISTINCT, mais pour des noms alphabétique, et en l'occurence seulement la première lettre.

En gros, j'ai une série de références, qui comporte des dates et des noms. Pour faire le menu par date, j'ai utilisé DISTINCT ainsi :

Code : Tout sélectionner

echo "<ul class=\"menu\">\n";
  $menuchrono=mysql_query 
  ("SELECT DISTINCT annee FROM references ORDER BY annee ASC")
  while($annee = mysql_fetch_array($menuchrono))
   {echo "<li><a href=\"liste.php?annee=", $annee['annee'], "\">", $annee['annee'], "</a></li>\n";	}
echo "</ul>\n";
Faire une liste qui distinguerait tout le nom serait beaucoup trop long pour un simple menu, aussi je voudrais faire la même chose pour les premières lettres des titres utilisés (il ne me mettrait ainsi pas de Y ou de Z si aucun titre ne commence par cette lettre).

Est-ce possible :?:

D'avance, merci.

PS : Je ne suis toujours pas certain d'être dans le sujet du forum, mais je compte sur votre compréhension.
GizMecano.net
http://gizmecano.net
chBok
Iguane
Messages : 991
Inscription : 17 oct. 2003, 19:17

Re: Opérateur MySQL pour menu alphabétique ?

Message par chBok »

GizMecano a écrit :Je recherche l'opérateur qui permet de trouver dans une base MySQL tous les mots commençant par la même lettre afin de pouvoir créer un menu sous forme d'annuaire alphabétique, annuaire qui se compose automatiquement selon les entrées de la table.
:D Vi.

Code : Tout sélectionner

SELECT DISTINCT LEFT(champ,1) AS lettre FROM table ORDER BY lettre ASC
GizMecano
Lézard à collerette
Messages : 416
Inscription : 02 août 2004, 20:27

Re: Opérateur MySQL pour menu alphabétique ?

Message par GizMecano »

Hello,
chBok a écrit : :D Vi.
Je le savais, je le savais :D

Et en plus, je brûlais, mais qu'est-ce que la doc de MySQL est mal foutue, bazar ! :shock:

En tout cas, mille mercis :D

Une dernière chose quand même, quand je veux récupérer ma lettre dans la boucle pour créer la liste, il me renvoie :
Notice: Undefined index: nom
Comment je dois écrire la variable alors :?:

[EDIT] Désolé :oops: J'ai oublié de lire le AS lettre :oops: [EDIT]

Ciao,
Dernière modification par GizMecano le 03 mai 2005, 22:08, modifié 1 fois.
GizMecano.net
http://gizmecano.net
GizMecano
Lézard à collerette
Messages : 416
Inscription : 02 août 2004, 20:27

Re: Opérateur MySQL pour menu alphabétique ?

Message par GizMecano »

Hello,

En continuant mes recherches, j'ai trouvé par ailleurs une autre méthode.

Code : Tout sélectionner


$countryQuery = "SELECT DISTINCT origin FROM fruit ORDER BY origin";
$countryResult = mysql_query($countryQuery, $connection);
$countryList = array();
$countryCount = 0;
while ($country = mysql_fetch_row($countryResult)) 
{
    $countryList[$countryCount] = $country[0];
    $countryCount++;
}

Me semble plus compliqué, nan :?:
GizMecano.net
http://gizmecano.net
chBok
Iguane
Messages : 991
Inscription : 17 oct. 2003, 19:17

Re: Opérateur MySQL pour menu alphabétique ?

Message par chBok »

GizMecano a écrit :

Code : Tout sélectionner

$countryQuery = "SELECT DISTINCT origin FROM fruit ORDER BY origin";
$countryResult = mysql_query($countryQuery, $connection);
$countryList = array();
$countryCount = 0;
while ($country = mysql_fetch_row($countryResult)) 
{
    $countryList[$countryCount] = $country[0];
    $countryCount++;
}

Me semble plus compliqué, nan :?:
Vi !!!

Allez, et après je dors :

Code : Tout sélectionner

$result = mysql_query("SELECT DISTINCT LEFT(champ,1) AS lettre FROM table ORDER BY lettre ASC");
while(list($lettre) = mysql_fetch_array($result)) echo $lettre." - ";  //Pour afficher toute les premières lettres
Ou bien, si tu veux un tableau à double entrée où les index sont les premières lettres :

Code : Tout sélectionner

$sql = mysql_query("SELECT LEFT(champ,1) AS lettre, champ FROM table ORDER BY lettre ASC, champ ASC");
$tableau = array();
while(list($lettre, $champ)) $tableau[$lettre][] = $champ;
print_r($tableau);
GizMecano
Lézard à collerette
Messages : 416
Inscription : 02 août 2004, 20:27

Re: Opérateur MySQL pour menu alphabétique ?

Message par GizMecano »

Hello,

Juste un mot de remerciments. :)

Ben ouais, ça se fait non :?: :wink:

Ciao,
GizMecano.net
http://gizmecano.net
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité