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 :

trier une colonne avec des valeurs alphanumériques


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 422
    Par défaut trier une colonne avec des valeurs alphanumériques
    Bonjour,
    tout est dans le titre. je cherche un moyen simple de trier une colonne d'une table
    qui contient des valeurs comme ceci

    1
    3
    12a
    5
    14Aa
    12b

    je cherche le tri uniquement sur la partie numérique en php ou mysql (je préfere mysql)

    résultat escompté
    1
    3
    5
    12a
    12b
    14Aa

    Merci

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 341
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 341
    Billets dans le blog
    17
    Par défaut
    Regarde la clause ORDER BY à utiliser :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select all *
    from (values row ('1'), row ('3'), row ('12a'), row ('5'), row ('14Aa'), row ('12b')) as d (v)
    order by cast(regexp_substr(v, '^\\d+') as signed) asc

    Tri effectué selon la 1re série de chiffres de la colonne.

    Donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    1
    3
    5
    12a
    12b
    14Aa

  3. #3
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 422
    Par défaut
    merci pour la réponse mais là je peu largué
    peux tu me mettre ta réponse avec mon code

    num étant la colonne qui contient les données


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $query = "SELECT * FROM ".$_SESSION["nom_collec"]." ORDER BY num ASC ";
    $result = mysqli_query($base_coll, $query);
    while ($data = mysqli_fetch_array($result))
     {
     
    }
    Merci

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 341
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 341
    Billets dans le blog
    17
    Par défaut
    Avec ta requête cela donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // Syntaxe PHP HereDoc
    $query = <<<SQL
        SELECT * 
        FROM {$_SESSION["nom_collec"]}
        -- On fait le tri selon les chiffres débutant la colonne num
        ORDER BY CAST(REGEXP_SUBSTR(num, '^\\\\d+') AS SIGNED) ASC
        SQL;
     
    $result = mysqli_query($base_coll, $query);
     
    while ($data = mysqli_fetch_array($result)) {
        // ...
    }

  5. #5
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 422
    Par défaut
    Merci pour ta réponse, par contre j'ai un problème avec la syntaxe
    chez moi ça ne marche pas

    version wampserver PHP 8.0.12 et Mariadb 10.4.13

    J'ai regardé dans php ini mais je n'ai rien trouvé concernant cette syntaxe HereDoc

    J'ai essayé de bidouiller comme ça mais ça ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = 'SELECT * FROM '.$_SESSION["nom_collec"].' ORDER BY CAST(REGEXP_SUBSTR(num, "^\\\\d+") AS SIGNED) ASC';
    Je vais m’absenter quelques jours (c'est ça les privilèges de la retraite !!!) et si tu as de la patiente pourrais tu m'expliquer comment fonctionne
    ton expression ORDER BY CAST(REGEXP_SUBSTR(num, "^\\\\d+") AS SIGNED) car là ça dépasse mes petites compétences

    Merci pour tout

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 341
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 341
    Billets dans le blog
    17
    Par défaut
    Pour le Heredoc, il faut regarder sur la doc PHP => https://www.php.net/manual/fr/langua...syntax.heredoc

    PHP 8 supporte cette syntaxe, mais il faut être rigoureux sur l'indentation. Quel est le message d'erreur ?

    J'ai essayé de bidouiller comme ça mais ça ne marche pas
    Quel est le message d'erreur ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/11/2018, 09h19
  2. Créer une colonne avec des valeurs fixes
    Par hanamachi dans le forum Langage SQL
    Réponses: 4
    Dernier message: 11/07/2012, 15h25
  3. Trier une colonne avec des valeurs numériques ou textes
    Par jfc dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/02/2006, 11h15

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