Votre question

Forcer tri correct nombre avec champ varchar

Tags :
  • Wordpress
  • Programmation
Dernière réponse : dans Programmation
7 Septembre 2010 18:08:36

Hello,
Je suis confronté a un probleme de taille.

J'ai un blog wordpress, pour les articles, on peut ajouté un champ personnalisé style :

- url_thumb
- visites

sous wordpress, la table SQL est ainsi (pour faire simple) :

id(int) - nom(varchar) - value(varchar)

Pour mon exemple cela donnera les enregistrement

1 - url_thumb - http://www.site.com/image.jpg
1 - visites - 0

Pour l'article deux, cela donnera :

2 - url_thumb - http://www.example.com/image3.jpg
2 - visites - 15

Mais seulement voila, sur une page je dois faire un "select value from latable where nom = 'visites' order by value DESC"

Donc les résultat ne sont pas bien classé, exemple :

- 9989
- 697
- 6239
- 21
- 2093

aulieu de :
9989
6239
2093
697
21

vous allez me dire, c'est normal, le champ est de type varchar, met le en int, je vais alors répondre "oui je suis au courant" mais le probleme c'est que le champ value prend du texte pour les autre champ personnalisé, donc je suis bloqué !

J'ai regardé les type de donné mysql existante via http://www.vulgarisation-informatique.com/mysql-types-d...

Mais je ne trouve aucun type de donnée me permettant de mixer INT et VARCHAR en meme temps et pourtant, c'est bien ce qu'il me faudrait !

Alors, y'a t'il une solution quand meme pour que l'affichage correct soit forcé au niveau du script php ? Une modification sur le champ de la table concerné ?
J'ai essayer avec le mod binary sur le varchar, mais cela ne change rien pour mon classement !

Merci

Autres pages sur : forcer tri correct nombre champ varchar

7 Septembre 2010 19:35:28

Salut,

Bon j'ai la flemme de tester donc je ne te promet rien, mais as-tu essayé quelque chose du style :
select value from latable where nom = 'visites' order by cast(value as INTEGER) DESC
m
0
l
7 Septembre 2010 20:11:40

je ne peut pas accéder à la requete MYSQL de wordpress qui affiche les résultat, donc c'est pour ça, je suis "coincé", car sur ma page j'utilise la fonction de WP pour afficher les post :

query_posts('meta_key=visites&orderby=desc');

Donc c'est pour ça que j'essai de savoir si y'a une alternative en modifiant le type du champ mysql qui contient les valeur à trier.
m
0
l
8 Septembre 2010 00:00:47

Je ne sais pas trop comment fonctionne WP, je ne l'utilise pas mais à priori c'est parce que ton champ semble etre au format texte. N'y a t il pas possibilité de le convertir en INTEGER ?
m
0
l
a c 232 L Programmation
8 Septembre 2010 00:24:45

Une solution peut être un peu bête, mais tu pourrais pas avoir une 2ème colonne de type int qui soit dépendante de ta 1ère. Genre que la valeur de la 2ème colonne soit un CAST de la 1ère ?
Je sais pas si ça peut se faire facilement en MySQL ça ?
m
0
l
8 Septembre 2010 00:48:56

Merci de vos réponse, mais en fouillant pas mal car la doc WP y'en a un paquet, WP à mis à disposition :

$allowed_keys[] = 'meta_value_num';

donc dans query post, aulieu de mettre &orderby=meta_value on remplace par meta_value_num et roule ma poule ;) 
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS