Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calcul et affichage classement

Sujet résolu
Anonyme
    23 mai 2018 à 13:02:13

    Bonjour,

    J'ai une table qui contient des points de joueurs, l'id étant celle du joueur. Elle est agencée de la sorte :


    Ce que je cherche à faire : afficher le classement d'un seul joueur par rapport aux autres, sur son profil.

    Ce que j'ai essayé de faire : comme le classement général où j'affiche le classement de tout le monde, je récupère toute la table et je calcule en php son classement. Mais je trouve ça vraiment trop lourd à faire, pour juste un profil, avec un seul classement à afficher.

    J'ai également pensé à ces deux solutions mais je ne sais pas trop si ça se met en oeuvre :
    - Peut-être existe t-il un moyen en SQL de créer lors du SELECT un indexage que je puisse récupérer en PHP ?
    - Peut-on créer une colonne SQL qui se met à jour automatiquement (et classe donc les joueurs) selon la colonne des points ? Si les points changent, la colonne changera aussi.

    Merci d'avance. Je ne sais pas trop vers quoi me tourner pour cet affichage tout léger

    -
    Edité par Anonyme 23 mai 2018 à 13:03:27

    • Partager sur Facebook
    • Partager sur Twitter
      23 mai 2018 à 13:14:10

      Bonjour,

      As-tu pensé à utiliser une vue ? 

      Par exemple une vue se basant sur quechose comme 

      SELECT id,general,detruit,perdu ORDER BY general DESC

      Cela te donnerai une vue où les joueurs sont déjà classés (si le nombre général représente le score du jour bien sur, sinon il faut adapter la vue).

      Après en PHP, il suffit d'effectuer un "select * from Nom_vue" et regarder l'index du joueur concerné 

      Je ne suis pas sur que cette solution soit la meilleur, mais ç peut donner un début de piste.

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        23 mai 2018 à 13:16:59

        Salut,

        Merci pour ta réponse.

        C'est la manière dont j'affiche le classement de tous les joueurs dans ma page classement.php (le ORDER BY avec récupération de l'index). Seulement là, j'aimerai afficher le classement d'un seul joueur sur son profil (profil.php avec un GET). Et je trouve ça vraiment lourd de récupérer toute la table et donc tous les joueurs pour ceci, non ?

        EDIT : et je n'ai à priori pas besoin de vue pour récupérer l'id du joueur concerné en soit. Là où ça me pose soucis, c'est de récupérer le classement d'un joueur sans récupérer tous les autres joueurs. Peut-être devrais-je créer une colonne avec le classement ?

        EDIT 2 : J'ai mal compris ce que tu m'as dis en fait, c'est vrai que c'est possible avec ta solution. Une vue ne récupère pas en soit toute la table je crois.. Elle permet juste de continuer sa requête par rapport à celle-ci, n'est-ce pas ? Je vais me pencher dessus




        -
        Edité par Anonyme 23 mai 2018 à 13:40:08

        • Partager sur Facebook
        • Partager sur Twitter
          23 mai 2018 à 17:44:30

          Oui voila, l'idée est effectivement de commencer à formater des données de manière plus cohérente par rapport à ton besoin.

          La création d'un champ "classement" peut effectivement être une solution, reste à savoir de quel manière celui-ci va être calculé (suivant le choix effectué ce traitement peut être assez lourd).

          Après si vraiment il y a des calculs à effectuer, tu peux très bien pousser le besoin un peu plus loin et utiliser des fonctions mySQL qui se chargerai de calculer le classement du joueur dont l'ID est passé en paramètre.

          Quel est le résultat visé en terme d'affichage ? par exemple les 5 joueurs au dessus et les 5 en dessous ? le classement du joueur concerné par rapport aux 10 premiers ? 

          Car suivant la complexité du résultat à atteindre la méthode à utiliser peut être plus ou moins complexe.

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            23 mai 2018 à 18:01:02

            EDIT : J'ai trouvé une solution ! Il suffit de suivre ce raisonnement et de l'adapter selon la situation

            http://googolflex.com/?p=690

            Sans union, mes 3 classements sont calculés d'office !

            Merci quand même pour ton aide :D résolu !

            -
            Edité par Anonyme 23 mai 2018 à 20:19:06

            • Partager sur Facebook
            • Partager sur Twitter

            Calcul et affichage classement

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown