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 par champs avec une seule requête


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Tri par champs avec une seule requête
    Bonsoir, je vous exprime ma situation...

    j'ai une table joueurs comprenant une bonne centaines de joueurs classé par plusieurs champs nom, prénom, position, compétences, prix etc...

    Je liste tous mes joueurs a l'aide d'une requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $req = "SELECT * FROM joueurs WHERE division='$division'";
    $sql = mysql_query($req);
    while ($data = mysql_fetch_array($sql))
     
     {
       echo $data['nom'];
       echo $data['prenom'];
       echo $data['position'];
       echo $data['competences'];
       echo $data['prix'];
     }
    Donc j'ai une multitude de ligne correspondant a chaque joueurs dans ma table ...

    Maintenant... j'aimerai pouvoir trier cette requete (Disons le resultat de cette requete) en fonction de " listbox " :

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <select name="search_competences" id="search_competences">        
            <option value="50">40-50</option>
    </select>
    Triera (n'affichera) que les joueurs compris entre 40 et 50 en compétences.

    j'ai pour le moment bricoler des listbox sous forme de formulaire qui envoie par post les données de la selection de ma listbox que je " réinjecte " dans une requete en y mettant l'argument WHERE compétence="$search_compétence".

    Seulement j'aimerai faire quelque chose de plus propre et de plus rapide c'est à dire trier ma première (et j'aimerai unique) requete pour classer mes joueurs en fonction du choix des listbox pour le prix leur compétences etc...

    Espérant avoir été suffisamment clair et concis merci de vos réponses

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2008
    Messages : 122
    Points : 89
    Points
    89
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = "SELECT * FROM joueurs WHERE division='$division' and competence>'$competenceMin' and competence<'$competenceMax'";
    C'est ce que tu recherche ??

    Cdt

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour et merci de votre réponse .
    Non, l'idée est de n'avoir qu'une seule requête ( SELECT * FROM JOUEURS WHERE division='$division') et de trier le résultat de cette unique requête a l'aide de listbox.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Points : 19
    Points
    19
    Par défaut
    essaye cette requete?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT * ,case 
     
    when competence between 0 and 10 then 0
    when competence between 11 and 20 then 11
    when competence between 21 and 30 then 21
    end as seuil_competence
     
     FROM joueurs WHERE division='$division'

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci de votre réponse, malheureusement je ne me suis pas fait comprendre ce n'est pas cela que je recherche.

    J'ai ma requête : SELECT * FROM joueur WHERE division='$division'
    et j'aimerai n'en avoir qu'une seul et celle -ci.

    Seulement j'aimerai en trier les résultats a l'aide de listbox et ne plus avoir a retouché a ma requête.

    Je pense qu'il doit falloir enregistrer les résultats dans un tableau (array) et le trier ensuite seulement je ne sais pas si je suis sur la bonne piste et je sais encore moin le faire.

    je ne vous demande pas de me le faire mais au moins de m'éclairer.

    Merci beaucoup pour l'intérêt que vous portez a ma demande.

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Ce que tu demandes n'est pas un tri, mais un filtre.
    Modifie l'attribut 'value' des éléments 'option' comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <select name="search_competences" id="search_competences">        
            <option value="40-50">40-50</option>
    </select>
    Et dans ta page de traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
      list($competenceDebut, $competenceFin) = explode('-', $_POST['search_competences']);
      $req = 'SELECT * 
              FROM joueurs 
              WHERE division = \'' . $division . '\'
              AND (competences BETWEEN ' . $competenceDebut . ' AND ' . $competenceFin . ')
              ORDER BY competences';
    ?>

Discussions similaires

  1. [WD-2003] Remplir plusieurs champs avec une seule entrée
    Par cariou76 dans le forum Word
    Réponses: 1
    Dernier message: 01/12/2009, 12h26
  2. Réponses: 2
    Dernier message: 10/05/2009, 15h38
  3. Réponses: 2
    Dernier message: 31/01/2009, 20h49
  4. Réponses: 1
    Dernier message: 08/11/2006, 12h16
  5. comment remplir 2 champs avec une seule listbox
    Par Didi17 dans le forum Access
    Réponses: 3
    Dernier message: 19/10/2005, 09h42

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