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 :

Comment filtrer le triage alphabétique [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut Comment filtrer le triage alphabétique
    Bonjour,

    J'extrait les données des client d'une base de donnée.
    Je trie par nom, prénom, ville, pay, avec ORDER BY.

    Cependant je souhaiterais aussi avoir la possiblité de trié les données selon ce que j'ai écrit dessus mais faisont un filtre sur les nom pour que j'ai que les nom commencant par
    "a" ou "b" ou "c" etc

    Maintenant je n'ai que 5 nom, mais bientôt (j'espère ) j'en aurai peu etre 500 ou 5000 .

    Donc il faudrait que je puisse filtrer les nom commencant par "f" (par exemple) et sur ce tri, pourvoir encore les classer par ordre alphabétique les prénom, ou les villes, ou les pays etc.

    Comment pourrais trier QUE les noms commencant par la même lettre alphabétique?

    Voyez-vous

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Quelque chose comme ca ?

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * FROM taTable
    ORDER BY prenom, ville, pay
    WHERE SUBSTRING(nom, 1, 1) = 'f'

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut
    Excellent, c'est exactement ca!

    Cependant j'ai encore une petite question par rapport à ca.

    Es-c qu'il y a la posibitité d'afficher tous les noms (de a à z) en conservant ca
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #$lettre = "f"
    $lettre = [toutes les lettre];
    SUBSTRING(nom, 1, 1) = "'.$lettre.'"
    ou alors dois-je faire un truc pour que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SUBSTRING(nom, 1, 1) = 'f'
    ne s'affiche plus
    expl:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(toutes_les_lettre){
    $substring = '';
    }else{
    $substring = 'SUBSTRING(nom, 1, 1) = "'.$lettre.'"';
    }
    Je pourrais faire un switch(), mais si on peut éviter...

  4. #4
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $lettres = array_merge(range('a', 'e'), range('p', 's'));
    $in = '';
     
     
    foreach($lettres as $lettre)
    	$in .= "'$lettre'".', ';
     
    $in = substr($in, 0, -2);
     
    $requete = '   SELECT * FROM taTable
                       ORDER BY prenom, ville, pay
                       WHERE SUBSTRING(nom, 1, 1) IN ('.$in.')';

    Cela t'affichera les lettres allant de "a" à "e" et de "p" à "s"

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut
    Bon j'ai fait un truc du genre et ca me va très bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		(isset($_GET['character'])) ? $character = $_GET['character'] : $character = '';
    		switch($character){
    			case ($character > "a" OR $character < "z") :
    				$substring = 'WHERE SUBSTRING(fd_name, 1, 1) = "'.$character.'"';
    				break;
    			default :
    				$substring = '';
    				break;
    		}

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 163
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 163
    Par défaut
    Intéressant Madfix.
    Merci!!!

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

Discussions similaires

  1. [oracle9i] comment filtrer par un "sous type"
    Par alex_r77 dans le forum Oracle
    Réponses: 4
    Dernier message: 26/04/2006, 17h13
  2. Réponses: 5
    Dernier message: 31/03/2006, 18h12
  3. [ADO.NET][VB.Net]Comment filtrer certains champs de DataRow?
    Par Philorix dans le forum Accès aux données
    Réponses: 3
    Dernier message: 14/02/2006, 20h26
  4. Comment filtrer une TListBox ?
    Par jmjmjm dans le forum Composants VCL
    Réponses: 9
    Dernier message: 17/11/2005, 13h08
  5. comment filtrer une table avec deux criteres càd 2 colonnes
    Par athmane2dz dans le forum Bases de données
    Réponses: 7
    Dernier message: 28/07/2004, 15h25

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