Tri alphabétique

Résolu
Signaler
Messages postés
5
Date d'inscription
dimanche 22 avril 2007
Statut
Membre
Dernière intervention
5 juin 2007
-
Messages postés
5
Date d'inscription
dimanche 22 avril 2007
Statut
Membre
Dernière intervention
5 juin 2007
-
Bonjour,
Si le thème choisi n'est pas correct, je vous présente par avance toutes mes excuses, mais je ne vois pas très bien où caser cette question.

Je doit faire un tri par ordre alphabétique de listes de noms .... ce qui me complique la vie, c'est que mes données (saisies dans une base de données en unicode) contiennent vraiment des caractères unicode (dont le code point est parfois assez haut).
Exemple :
Bopp, Franz
Bréal, Michel
Brøndal, Rasmus
Brosses, Karl,
Hervás y Panduro, Lorenzo ou  autres joyeusetés comme : kurilovi ???
Kuri l ovicz
ou  autres joyeusetés comme : ? ? ?  etc...

Quelqu'un s'est-il déjà penché sur ce problème

7 réponses

Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Salut,

Ok, je comprends mieux quel est ton problème... : tu veux faire le tri coté client en javascript ! (j'ai bien compris?)

Honêtement, je pense que c'est une [très] mauvaise idée... Il faut placer les fonctionnalité au bon endroit.

Le tri est vraiment qquel chose qui doit être traité par la base de données,
car elle a été codée pour faire ce genre d'opération sur un très grand nombre d'éléments

Tu peux, si tu veux, toutefois concerver ton réordonnement coté client :

[CODE MYSQL]
set @pos = 1;
select name, @pos := @pos+1 as order, ..., from authors order by name asc;
[Fin code]

Avec ça, ta base s'occupe de trier selon les noms (avec ça connaissance du langage humain (é,ê,è,ë,e, Ê, Ë, ... ont le même ordre)
Et javascript réordonne selon la position déterminée par la base...

A+
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Salut...

L'utilisation d'unicode est une bonne chose. Mais fait attention à bien respecter la chaîne de l'unicode...

Le principal problème survient quand la connexion entre PHP et MySQL n'est pas en UTF-8.
Pour cela, tu peux executer la requête

"set names utf8"


Avant tout transfert de données (mysql_fetch_x).

Ma réponse est-elle la bonne ? (car sinon, j'en ai encore d'autres)

A+
Messages postés
5
Date d'inscription
dimanche 22 avril 2007
Statut
Membre
Dernière intervention
5 juin 2007

Merci d'intervenir,
J'ai toutes les peines du monde à trouver ou cliquez pour continuer la discussion.

En tout cas, j'essaie encore une fois.

Je crois que mes données respecte bien une chaine unicode (encodée utf8).
En fait, je travaille avec PostgreSql, et j'ai déjà un premier tri avec les affichages correspondants qui tourne.
Pour le voir http://atlas.ens-lsh.fr/accueil.php (attention, le site est en test...)

Le problème c'est que je travaille à coup de preg-replace, alors je me retrouve à entrer des trucs du style RE["a"] = new RegExp("á|à|â|ã|ä|å|æ|ā|ă|ą|ǝ|ǟ|ǡ|ǻ|ǽ|ȁ|ȃ|ẚ|ạ|ả|ấ|ầ|ẩ|ậ|ắ|ằ|ẳ|ẵ|ặ|ɑ|ɒ|ɐ","gi");

probablement illisibles puisqu'il n'y a pas d'arial unicode ici.

Bonjour l'exhaustivité ....
Et je cherchais une meilleure solution.
Voilà, A+
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Oula, je ne comprends pas ce que tu fais... ?

Premièrement, tu peux utiliser les fonctions utf8_decode et utf8_encode...
Mais surtout, pourquoi utiliser des preg_match dans un tri ?
Ta base SLQ devrait faire le tri, pas php.
Messages postés
5
Date d'inscription
dimanche 22 avril 2007
Statut
Membre
Dernière intervention
5 juin 2007

Elle fait un tri, mais bizarre  .

Quand je recode j'ai bien (premier passage, par auteurs, sorti du PHP) :
Bopp, Bréal, Brøndal, Brosses, Brugman, Bühler ...

Sans ça, par exemple clic en local sur titre colonne (c'est du javascript brut)
Brosses,Brugman, Bréal, Brøndal, Bühler

dans l'ordre de tri classique le ø, ou le é vient après le r.
Si je n'avais que des minuscules accentuées françaises, je pourrai m'en sortir.
Malheureusement j'ai plein d'autres caractères.
Messages postés
5
Date d'inscription
dimanche 22 avril 2007
Statut
Membre
Dernière intervention
5 juin 2007

En complément :
Je suis aller voir pour ajouter soit à PHP soit à Postgres les ICU (

International Components for Unicode)
mais comme je rajoute des tris côté client et que javascript ne connait les "sort sequences" de ICU,
il faut que je trouve une autre solution (pas trop lente!).

Mais bon, laisse tomber : je crois qu'il me faut encore pas mal piocher
Messages postés
5
Date d'inscription
dimanche 22 avril 2007
Statut
Membre
Dernière intervention
5 juin 2007

C'est pas vraiment que je VEUX faire le tri côté client, mais on m'a demandé de rajouter des tris sur colonnes au gré des utilisateurs.

Par contre et pour le code, ça c'est l'idéée que je cherchais.

Il faut que je me réorganise, mais MERCI