Page 1 sur 1

Mumm problème d'order by

Posté : 29 juin 2005, 09:47
par Cobaye
Sur mon site perso http://www.olecorre.com si vous afficher une lsite de mot vous constaterez que l'ordre est pas bon pourtant y a un order by, le problème vient que pour les accents ils sont mis en codes html ce qui fausse l'ordre les mot avec accent passe avant exemple flagrant sur la lettre R.

Quelqu'un aurai une idée pour avori un bon ordre ? le tout en sql
Moi à part faire un champ qui comprend les mots avec accents et non le code html je vois pas, mais ca alourdirai la base.

Posté : 29 juin 2005, 09:53
par zeus
Je verrais bien un autre truc, mais ca surcharge ta base aussi, c'est quand tu enregistre un mot, tu as le champ "libellle" qui contient le mot avec accent et un champ "texte" qui contient le mot sans accent et ensuite tu trie sur le champ "texte" et tu devrais tout avoir dans l'ordre

Pas très optimisé mais je vois rien d'autre pour le moment :oops:

Posté : 29 juin 2005, 09:56
par Cobaye
c'est tout a fait ce que je pensais faire mais je voulais voir si quelqu'un avait une autre idée ! En plus les 7000 mots sotn en code html vaut que j'implemente le nouveau champ sans le ode html donc faire l'opération inverse du htmlentities !

Posté : 29 juin 2005, 09:58
par zeus
Il y aurait aussi la solution de rajouter un champ "ordre" numérique dans la bdd et, à chaque fois que tu rajoute un mot dans la bdd, tu trouve son numero d'ordre et tu incrémente tout les suivants, mais :
- lourd à gérer
- même problème pour le tri

Posté : 29 juin 2005, 09:59
par mere-teresa
Pourquoi ne pas stocker dans la base avec les accents (ça ne gêne pas SQL, il me semble...) et en sortant les mots remplacer par les entités HTML correspondantes ?

Posté : 29 juin 2005, 10:03
par Cobaye
en fait si j'ai mis les accents en html c'est que quand je bosse sur la base ne local chez moi sous windows, j'ai aucun soucis mais des que je met à jour la base sur mon hébergement en linux, j'ai toujours des ? à la place des accents, j'ai pas trouver de parade ! sit je donne dans la requete insert le mot ou le defénition avec des accents, j'ai systématiquement des ? sur le site.

Posté : 29 juin 2005, 10:08
par mere-teresa
As tu vérifié le charset de ta base ?
http://www.nexen.net/docs/mysql/annotee ... arsets.php

Posté : 29 juin 2005, 10:10
par Cobaye
suis en latin1_swedish_ci sur mon poste et sur l'hébergement

Posté : 29 juin 2005, 10:13
par Cobaye
bon resolu, j'ai mise à jour le chmpa mot en enlevant le code html et en remettant les accents

Posté : 29 juin 2005, 10:19
par cerber
moi je vote pour la sol de Mere-T
Et vive l'UTF-8

Bon, plus sérieusement, ton prob m'a l'air très intéressant : j'y avais jamais pensé, mais c vrai que ca doit arriver très souvent, car il est moins lourd de stocker du html dans la BDD que de faire des htmlentities a chaque fois (quoi que ce serait la solution de facilité dans notre cas)

pour regler ce délicat probleme il faudrai modifier la fonction de comparaison pour qu'elle accepte une option *HTMLENTITIES* et que, dans ce cas elle convertisse les entitiées html en leur équivalent mais ca sous entend de faire un patch pour mysql ... en fait, je crois que je suis bon pour l'azile, non, la meilleur solution reste l'UTF-8 (même si g jamais compris comment le faire marcher