IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Tri de chiffres dans l'ordre croissant [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut Tri de chiffres dans l'ordre croissant
    Bonjour,

    Je cherche à extraire des id de ma base, dans l'ordre croissant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT DISTINCT `num`
    FROM table
    ORDER BY `num` ASC  LIMIT 0 , 30
    Seulement les chiffres ont été enregistrés ainsi : 1,2...8, 9, 10...

    Et le résultat du tri est : 0, 1, 10, 11...20, 21... 3, 4...

    Je voudrais que le 10 vienne après le 9 (c'est fou ça ). J'ai pensé à str_pad() mais cela ne me plait pas, ensuite il faudrait enlever les 0 en trop pour l'affichage, je trouve que c'est beaucoup de code pour pas grand-chose. Connaissez-vous une technique pour conserver les valeurs sans 0 devant, et qui permettrait un tri dans l'ordre souhaité ?

    Merci d'avance !

    Edit : un LPAD dans la requête aurait le même effet que le str_pad() je pense ? Je vais essayer un ORDER BY CAST

  2. #2
    Membre éclairé Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Par défaut
    Salut,

    Ton problème vient peut-être du fait que ton champs MySQL est d'un autre type que le type numérique.

    En gros, si tu fais un ORDER BY sur un champ de type CHAR, le 9 viendra après le 10 (logique 9 > 1).
    Si tu passe ton champ en NUMERIQUE, ton tri suivant l'ordre des chiffres sera respecté (0 1 2 3 4 ...).

    Cordialement

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 63
    Par défaut
    Ton id s'appele 'num' ? M'enfin est il bien indexable ?

    Sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sort($ton_tab, SORT_NUMERIC);

  4. #4
    Membre éclairé
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 852
    Par défaut
    Ah c'est pas bête...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ALTER TABLE `mcrhisto` CHANGE `num` `num` INT( 15 ) NOT NULL
    C'était un VARCHAR(15).

    Merci JmL40 !

    Edit : onime, non il est pas indexable, ce n'est pas l'id de ma table en fait

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tri par résumé dans un ordre précis
    Par Folkensan dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 11/12/2007, 16h21
  2. Obtenir les colonnes d'une table par ADO dans l'ordre croissant
    Par soso78 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/11/2007, 17h59
  3. Tri d'un tableau par ordre croissant
    Par goaks dans le forum Algorithmes et structures de données
    Réponses: 46
    Dernier message: 29/06/2007, 16h41
  4. Réponses: 3
    Dernier message: 24/02/2007, 15h21
  5. Réponses: 2
    Dernier message: 12/06/2006, 18h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo