Tri alphabétique

Résolu
cs_jobern Messages postés 5 Date d'inscription dimanche 22 avril 2007 Statut Membre Dernière intervention 5 juin 2007 - 4 juin 2007 à 13:33
cs_jobern Messages postés 5 Date d'inscription dimanche 22 avril 2007 Statut Membre Dernière intervention 5 juin 2007 - 5 juin 2007 à 09:52
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

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
5 juin 2007 à 09:31
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+
3
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
4 juin 2007 à 14:22
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+
0
cs_jobern Messages postés 5 Date d'inscription dimanche 22 avril 2007 Statut Membre Dernière intervention 5 juin 2007
4 juin 2007 à 16:14
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+
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
4 juin 2007 à 16:57
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jobern Messages postés 5 Date d'inscription dimanche 22 avril 2007 Statut Membre Dernière intervention 5 juin 2007
4 juin 2007 à 17:10
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.
0
cs_jobern Messages postés 5 Date d'inscription dimanche 22 avril 2007 Statut Membre Dernière intervention 5 juin 2007
4 juin 2007 à 17:28
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
0
cs_jobern Messages postés 5 Date d'inscription dimanche 22 avril 2007 Statut Membre Dernière intervention 5 juin 2007
5 juin 2007 à 09:52
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
0
Rejoignez-nous