Page 1 sur 1

Trier un champs varchar

Posté : 31 mars 2005, 11:55
par charabia
Bonjour !

Je voudrais faire un tri sur un champs varchar de ma base. En fait il s'agit d'une heure donnée, par exemple 8h30.

Quand je tente de faire ORDER BY heure ASC, tout va bien pour 8h30, 9h30...mais dès qu'on arrive à 13h30, hop le "13h30" se retrouve avant le 8h30...

Y a t-il un moyen de contourner ce problème ?

Merci ! :wink:

Posté : 31 mars 2005, 12:16
par Phiss
C'est en effet logique vu que le 1 est avant le 8.

Je peux te proposer une solution mais je ne sais pas si c'est la plus simple et rapide.
Il faut donc que tu réorganise ta base et qu'au lieu d'avoir un champ heure de type varchar tu mettes 2 champs en int.
Dans le premier tu mets les heures et dans le second les minutes.
Ensuite tu fais ton tri avec un ORDER BY heure, minute

Voilà pour ma proposition.

Posté : 31 mars 2005, 12:17
par sadeq
redéclarer ce champ sous le type date/heure. VARCHAR n'est pas correcte dans ton cas.
Il n'ya rien à faire de plus. Il faut respecter le principe et non pas contourner la réalité.

Posté : 31 mars 2005, 12:18
par Phiss
C'est vrai que c'est plus simple.
J'avais oublié le type date/heure.

Re: Trier un champs varchar

Posté : 31 mars 2005, 12:26
par albat
un tri sur un champs varchar
...
En fait il s'agit d'une heure donnée, par exemple 8h30.
HÉRÉTIQUE !!! :tir2:
Une heure (ou une date) doit être stockée dans un champ de type approprié.

Rappel : Un tri sur un champ de type alphanumérique est toujours plus long qu'un tri sur un champ numérique.

Au bûcher ! Au bûcher ! :lol:

Posté : 31 mars 2005, 12:34
par Cyrano
Encore un peu et albat va nous rédiger quelque chose du genre:
Notre PHP qui êtes au WEB
que votre code soit corrigé
...
:langue:
Ceci dit, il a raison sur un point : il est de très loin préférable d'utiliser des types de champs appropriés dansune base de données et en l'occurence un champ TIME pour enregistrer des heures.

Si tu préfères ne pas toucher à la base de donnée et persister dans l'hérésie, il faut que tu enregistres des valeurs d'heures et de minutes sur deux chiffres et non sur 1 dans le cas où ce serait entre 0 et 9 compris.

Mais si tu en es au début de ton développement, modifie ta base, tu gagneras du temps pour plus tard ;)

Posté : 31 mars 2005, 12:45
par albat
Mais si tu en es au début de ton développement, modifie ta base, tu gagneras du temps pour plus tard ;)
Certes, certes... mais cela ne nous interdit pas de le brûler, au moins ? :mrgreen:

Faut m'comprendre, ça fait plus de 48 heures que je me bats sur un même bug, alors forcément, j'm'énerve un peu...

Posté : 31 mars 2005, 12:47
par sadeq
Reculer d'un pas fait avancer... contrairement à ce qu'on croit.
...
S'élever pour voir, mais rester les pieds sur terre... ce n'est pas impossible.

Posté : 31 mars 2005, 12:52
par flitox
Certes, certes... mais cela ne nous interdit pas de le brûler, au moins ? :mrgreen:
han le sadique :lol:

Posté : 31 mars 2005, 13:09
par albat
Reculer d'un pas fait avancer... contrairement à ce qu'on croit.
S'élever pour voir, mais rester les pieds sur terre... ce n'est pas impossible.
C'est beau comme du Raffarin ! :lol:

Posté : 31 mars 2005, 14:41
par charabia
Ô pardonner mon ignorance loooool !!!

Voui je suis tout à fait d'accord avec vous....je ne suis pas au début des dev mais pas de soucis je vais revoir tout ça avec un type TIME.

Et pour le bûcher, ça pollue...c'est pas bon pour la santé...on va pi être l'oublier qu'est-ce-que vous en dites ? :-"

Posté : 31 mars 2005, 14:49
par albat
Et pour le bûcher, ça pollue...c'est pas bon pour la santé...on va pi être l'oublier qu'est-ce-que vous en dites ? :-"
Allez, c'est bon ! On va oublier pour cette fois.

D'autant que je ne suis pas dans une situation favorable...
:-$