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 :

Problème de tri [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Points : 45
    Points
    45
    Par défaut Problème de tri
    Bonjour à tout le monde,

    Voilà mon souci :
    Je fait un site de résultats pour le tir sportif.
    par exemple un adulte doit tirer 60 plombs, cela se décompose en six passes de 10 plombs, ce qui donne cela :
    toto 90 95 94 92 98 96 total 565
    jusque là ça va ( c'est le script que je vous donne)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    $resultcomp60c="SELECT 
        result_competition.score1,score2,score3,score4,score5,score6,
        result_competition.score1+score2+score3+score4+score5+score6 as total,
        info_tireur.nom_tireur as nom_tireur,
        info_tireur.prenom_tireur as prenom_tireur,
        info_club.nom_club as nom_club
        FROM result_competition,info_tireur,info_club
        WHERE result_competition.id_tireur=info_tireur.id_tireur 
        AND result_competition.id_club=info_club.id_club"; //Variable pour les 60 coups
     
    #Recherche des categories concernées uniquement par les 60 coups
        $reponse60c=mysql_query("$resultcomp60c AND result_competition.id_categorie=".$_GET['idnomcat']." AND result_competition.id_discipline=".$_GET['idnomdisc']." AND result_competition.id_categorie!=7  AND result_competition.id_categorie!=9  AND result_competition.id_categorie!=11 AND result_competition.id_categorie!=12 ORDER BY total DESC") ;
            while ($donnees60c = mysql_fetch_array($reponse60c))
            {
                if ($donnees60c["nom_club"] != $gouvieux)
                {
                $affichage="resul";
                }
                else
                {
                $affichage="resulgouv";
                }
            print "
            <td class=$affichage>".$donnees60c["nom_tireur"]." ".$donnees60c["prenom_tireur"]."</td>
            <td class=$affichage>".$donnees60c["nom_club"]."</td>
            <td align=center class=$affichage>".$donnees60c["score1"]." ".$donnees60c["score2"]." ".$donnees60c["score3"]." ".$donnees60c["score4"]." ".$donnees60c["score5"]." ".$donnees60c["score6"]."</td>
            <td align=center class=$affichage>".$donnees60c["total"]."</td></tr>";
            }
        print "</tr></table><br>";
     
    #Recherche des categories concernées uniquement par les 60 coups
        $reponse60c=mysql_query("$resultcomp60c AND result_competition.id_categorie=".$_GET['idnomcat']." AND result_competition.id_discipline=".$_GET['idnomdisc']." AND result_competition.id_categorie!=7  AND result_competition.id_categorie!=9  AND result_competition.id_categorie!=11 AND result_competition.id_categorie!=12 ORDER BY total DESC") ;
            while ($donnees60c = mysql_fetch_array($reponse60c))
            print "
            <td class=$affichage>".$donnees60c["nom_tireur"]." ".$donnees60c["prenom_tireur"]."</td>
            <td class=$affichage>".$donnees60c["nom_club"]."</td>
            <td align=center class=$affichage>".$donnees60c["score1"]." ".$donnees60c["score2"]." ".$donnees60c["score3"]." ".$donnees60c["score4"]." ".$donnees60c["score5"]." ".$donnees60c["score6"]."</td>
            <td align=center class=$affichage>".$donnees60c["total"]."</td></tr>";
            }
        print "</tr></table><br>";
    cela se complique en cas d'égalité avec d'autres compétiteurs. En cas d'égalité de total on compare la dernière passe, dans notre cas 96 si elle est plus haute que l'autre tireur alors il a gagné. Si c'est le même score sur la dernière passe alors on compare la 5ème ainsi de suite ...

    Je n'arrive pas à voir par quelle bout prendre ce problème

    Merci pour votre aide

    Jean-Michel

  2. #2
    Membre habitué Avatar de alexmorel
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    196
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2003
    Messages : 196
    Points : 157
    Points
    157
    Par défaut tiens essai ca
    Il faut juste change ça. Enfin je pense.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $resultcomp60c="SELECT 
        result_competition.score1,score2,score3,score4,score5,score6, 
        result_competition.score1+score2+score3+score4+score5+score6 
            as total, 
        info_tireur.nom_tireur as nom_tireur, 
        info_tireur.prenom_tireur as prenom_tireur, 
        info_club.nom_club as nom_club 
        FROM result_competition,info_tireur,info_club 
        WHERE result_competition.id_tireur=info_tireur.id_tireur 
        AND result_competition.id_club=info_club.id_club
        order by (total, score6, score5, score4, score3, score2, score1)";
    A.Morel

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Points : 45
    Points
    45
    Par défaut
    Hello,

    L'idée est effet séduisante mais elle ne résoud pas mon problème
    voilà un exemple en appliquant ta méthode:

    Toto 93 96 95 94 91 97 566
    Titi 94 93 92 96 96 95 566
    Tutu 96 93 90 95 97 95 566

    Voilà 3 scores identiques Toto est bien premier puisqu'il a fait la plus haute 6ème passe mais Tutu devrait être devant Titi puisque la 6ème est égale mais à la 5ème Tutu a fait un score plus haut (97) que Titi (96)

    C'est pas simple

    Merci de t'être penché sur la question

    Jean-Michel

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut Re: tiens essai ca
    Citation Envoyé par alexmorel
    Il faut juste change ça. Enfin je pense.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $resultcomp60c="SELECT 
        result_competition.score1,score2,score3,score4,score5,score6, 
        result_competition.score1+score2+score3+score4+score5+score6 
            as total, 
        info_tireur.nom_tireur as nom_tireur, 
        info_tireur.prenom_tireur as prenom_tireur, 
        info_club.nom_club as nom_club 
        FROM result_competition,info_tireur,info_club 
        WHERE result_competition.id_tireur=info_tireur.id_tireur 
        AND result_competition.id_club=info_club.id_club
        order by (total, score6, score5, score4, score3, score2, score1)";
    Ne manque-t-il pas DESC pour avoir l'effet désiré ?


    Cordialement, Julp

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Points : 45
    Points
    45
    Par défaut
    Hello,

    Bien entendu j'avais rajouté DESC pour avoir un tri en ordre décroissant

    Hélas cela ne fonctionne pas

    Jean-Michel

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    L'ordre par défaut de tri est ASC lorsque celui-ci n'est pas précisé. Or vous souhaitez que tous les champs soient triés par ordre décroissant (DESC). Mon hypothèse est la suivante : DESC n'est peut être pas dans votre requête appliquée à tous les champs précisés dans ORDER. Voir la documentation MySQL à ce sujet.


    Cordialement, Julp

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 52
    Points : 45
    Points
    45
    Par défaut
    Hello,

    Je crois avoir trouvé, voilà la syntaxe exacte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY total DESC,score6 DESC,score5 DESC,score4 DESC,score3 DESC,score2 DESC,score1 DESC
    Apparemment cela marche, je vais tester plus en avant.

    Merci à AlexMorel pour son idée

    Jean-Michel

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

Discussions similaires

  1. Problème de Tri
    Par darkian dans le forum Langage SQL
    Réponses: 5
    Dernier message: 02/01/2006, 14h39
  2. Problème de tri avec analyse croisée
    Par drthodt dans le forum Access
    Réponses: 2
    Dernier message: 18/10/2005, 16h23
  3. [TToolBar] Problème de tri
    Par titiyo dans le forum Composants VCL
    Réponses: 6
    Dernier message: 01/09/2004, 09h21
  4. [Collections] Problème de tri
    Par feti2004 dans le forum Collection et Stream
    Réponses: 16
    Dernier message: 03/08/2004, 16h45
  5. problème de tri et optimisatiopn
    Par psyco2604 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 13/05/2004, 10h44

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