Pb lors du tri de chiffres

nicolas01
Invité n'ayant pas de compte PHPfrance

22 oct. 2007, 17:53

Bonjour je stocke dans ma base des articles et pour cela je les fais apparaitre en ordre decroissant en fonction de leur numero (des chiffres entiers) et je voudrais les afficher dans un ordre jusque la pas de pb, mais le tri se fait mal en effet il me donne en tri
9
8
7
6
5
4
3
2
11
10
1
0

au lieu de
11
10
9
8
7
6
5
4
3
2
1
0

idem pour les centaines

Jai comme select :
SELECT * FROM resumes order by numero DESC 
Et dans ma base cest stocké ainsi : numero (le nom de mon champ) varchar(3) latin1_swedish_ci

Jai cherché sur google et cie mais rien , merci davance pour votre aide

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

22 oct. 2007, 19:14

VARCHAR est destiné à accueillir du texte, si tu veux stocker des nombres il te faut utiliser une colonne de type TINYINT UNSIGNED (0 à 255) ou SMALLINT UNSIGNED (0 à 65535).

Voir http://dev.mysql.com/doc/refman/5.0/fr/ ... types.html

Eléphant du PHP | 443 Messages

22 oct. 2007, 19:14

Salut,

C'est pas forcement un bonne idée de stocker des chiffres en texte, pour les manipuler ensuite comme des chiffres, mais bon tu dois avoir tes raisons :wink:

Pour ton problème essaie ça:
SELECT * FROM resumes order by (0+numero) DESC 

Tracker.

nicolas01
Invité n'ayant pas de compte PHPfrance

23 oct. 2007, 03:34

Un grand merci cest parfait jai essayé avec TINYT et ca marche, :D je ne connaissais pas celui ci

Mammouth du PHP | 19672 Messages

23 oct. 2007, 06:31

À connaître : lorsque tu stockes des nombres en format texte, il reste possible de passer par un transtypage avec CAST pour effectuer des calculs. Ce n'est bien entendu pas optimal, mais ça peut servir si on a pas la main sur la structure d'une base de données pour en adapter ponctuellement certains éléments.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 2144 Messages

23 oct. 2007, 10:31

Un grand merci cest parfait jai essayé avec TINYT et ca marche, :D je ne connaissais pas celui ci
Ne pas oublier, de prévoir un type de champ qui peut stocker des valeurs suffisaments grandes;
Sinon, l'auto-incrément risque de dépasser la valeur du plus grand nombre stockable, et de donner un bug soudain.

ViPHP
ViPHP | 5924 Messages

23 oct. 2007, 10:36