Tri alphabétique groupé par lettre

code
WRInaute impliqué
WRInaute impliqué
 
Messages: 648
Inscription: 29 Juil 2005

Tri alphabétique groupé par lettre

Message le Ven Fév 02, 2007 17:10

Bonjour,

me voici confronté à un nouveau problème :

je souhaiterais que les résultats d'une requete mysql soient groupés par ordre alphabétique et par groupe de lettre.

Je suis certain qu'il est possible d'effectuer une opération plus simple que 26 fois la même requete qui sélectionne à chaque fois les mots qui commencent par a, puis b, puis c etc...

Mais je voudrais bien mettre en place une solution plus "propre"

En outre, je pense qu'il faudrait qu'il y ait un break pour afficher d'abord tous les mots commençant par a, puis reprendre pour b...

Quelqu'un a-t-il une idée


Malek-78
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 41
Inscription: 8 Jan 2007

Re: Tri alphabétique groupé par lettre

Message le Ven Fév 02, 2007 18:30

code a écrit:ordre alphabétique et par groupe de lettre.

Je suis certain qu'il est possible d'effectuer une opération plus simple que 26 fois la même requete qui sélectionne à chaque fois les mots qui commencent par a, puis b, puis c etc...

Mais je voudrais bien mettre en place une solution plus "propre"

En outre, je pense qu'il faudrait qu'il y ait un break pour afficher d'abord tous les mots commençant par a, puis reprendre pour b...

Quelqu'un a-t-il une idée


Ma methode pourrait s'apparenter à du bricolage mais elle devrait marcher.

Tu effectues ta requete en appliquant un order by.
Ta liste de resultat est par consequent triée

exemple :
select nomColonne from table ORDER BY nomColonne ASC"

Par la suite lorsque tu affiches ta liste de resultat tu effectues un test en php pour savoir si la premiere lettre a été modifié

Si lettre identique à la precedente
-----afficher ligne
Sinon
-----appliquer separation
-----afficher ligne

code
WRInaute impliqué
WRInaute impliqué
 
Messages: 648
Inscription: 29 Juil 2005

Re: Tri alphabétique groupé par lettre

Message le Ven Fév 02, 2007 20:12

Malek-78 a écrit:
Par la suite lorsque tu affiches ta liste de resultat tu effectues un test en php pour savoir si la premiere lettre a été modifié

Si lettre identique à la precedente
-----afficher ligne
Sinon
-----appliquer separation
-----afficher ligne


C'est exactement ce à quoi j'avais pensé... Maintenant je bloque sur comment effectué ce test en php :lol:


Malek-78
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 41
Inscription: 8 Jan 2007

Re: Tri alphabétique groupé par lettre

Message le Ven Fév 02, 2007 21:59

code a écrit:C'est exactement ce à quoi j'avais pensé... Maintenant je bloque sur comment effectué ce test en php :lol:


Utilise la methode substr() de php.

Tu trouveras ton bonheur ici:
http://www.manuelphp.com/php/function.substr.php

Cette methode te permettra de recuperer un "morceau" d'une chaine de characteres.

L'algo donnerait à peu pret ca :

$requete = mysql_query ("SELECT nomColonne FROM table ORDER BY nomColonne ");

//variable permettant de stocker la premiere lettre de la colonne "nomColonne"
$lettre_tampon = -1;

//En bcle sur les resultats
while ($res = mysql_fetch_object($requete))
{
$lettre_tester= substr($res->nomColonne , 0, 1);

//lettre precedente differente de la lettre suivante
if ($lettre_tester!= $lettre_tampon)
{
appliquer separation
afficher ligne
// Sauvegarde de la nouvelle lettre
$lettre_tampon= $lettre_tester;
} else{

afficher ligne

}

J'ai pas testé le resultat mais cela devrait etre correcte.

Il est à noter qu'avec cet algo, tu appliqueras tjs une separation avant le premier bloc car la valeur tampon est initialiser par defaut à -1.

code
WRInaute impliqué
WRInaute impliqué
 
Messages: 648
Inscription: 29 Juil 2005

Message le Sam Fév 03, 2007 17:27

Je te remercie : c'est exactement ce que je cherchais. ça marche impeccable. Il faut juste que je vois pourquoi il me trouve un "7" comme première lettre avec aucun résultat alors qu'il devrait y en avoir un (et c'est peut-être ça le problème justement, c'est qu'il y en a seulement un dans la table)

code
WRInaute impliqué
WRInaute impliqué
 
Messages: 648
Inscription: 29 Juil 2005

Message le Sam Fév 03, 2007 17:29

C'est bon c'est réglé, je vois pas ce qui a coincé mais bon tout est impeccable


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités