|
SARL Virtualys
|
Lundi 07 Août 2006 7:29:11 pm
Gestion des accents dans les fonctions de tri
Bonjour !
J'utilise un fetch pour obtenir une liste de noeud, que j'aimerais trier. J'ai appliqué le paramètre "sort_by" et effectivement, la liste est triée. Seul bémol : la gestion des accents. En effet, le tri ne tient pas compte des accents, et interprète par exemple les mots débutant par 'é' comme étant des 'e'. J'ai raté un paramètre ou quelque chose ? Il n'y a pas moyen de différentier les lettres avec ou sans accent ?
Cordialement
Jean-Luc
|
|
tristan lemasson
|
Mardi 04 Novembre 2008 2:09:23 pm
Re: Gestion des accents dans les fonctions de tri
Bonjour,
Je suis content d’avoir lu ce message car il se trouve que j’ai exactement le problème inverse. Cela prouve donc qu’une solution doit exister dans les deux sens.
J’ai une série d’objet que je veux classer alphabétiquement suivant un attribut « nom_attribut» de type «Text Line ».
Je récupère ma list avec un fetch de la forme suivante :
fetch( content,list, hash( parent_node_id, 1145, limit, 68, offset, 0,
'sort_by', array('attribute', true(), 'nom_classe/nom_attribut'),
class_filter_type, "include", class_filter_array, array(89)))}
(J’ai inséré ici des retours à la ligne dans le code pour mettre en avant la partie concernant le tri.)
À la sortie, j’obtiens par exemple : …. Balle, Belle, Broyer, Bécasse.
Faites-vous un tri sur a propriété « na me » de l’objet ou sur un attribut particulier ? Dans ce dernier cas, quelles sont les caractéristiques de cet attribut ?
Avez-vous trouvé par ailleurs la raison de votre problème ?
|
|
florian Bellenger
|
Jeudi 06 Novembre 2008 4:40:15 pm
Re: Gestion des accents dans les fonctions de tri
Bonjour,
J’ai travaillé sur le problème dont a parlé Tristan.
Finalement, nous avons fini par trouver notre solution en :
1) rajoutant un filtre personnalisé dans notre fetch.
2) Créant notre alias sur la colonne à classer en passant par ce filtre : $extendedAttributeFilter[columns]= «nom_colonne as nom_alias »
3) Mettant un Order_by en dur sur cette colonne avec un collate qui prend le pas sur le collate qui avait été choisi lors de l’initialisation de la base et qui donnait notre mauvais classement.
'sort_by', array(' nom_alias COLLATE `utf8_general_ci`', true()),
Nous avions besoin de l’alias car il y avait plusieurs colonne du même nom dans la requête.
(Nous travaillons sur la v 4.0.0)
Cordialement,
|