Créer un classement - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Créer un classement (/showthread.php?tid=7500) |
Créer un classement - xanthius - 11-11-2015 Bonsoir, actuellement sur la réalisation d'un jeu de gestion de compagnie aérienne je me retrouve devant un petit soucis de taille. Réaliser un petit classement des compagnies en fonction de leurs bénéfices journaliers. Le soucis vient du fait de l'attribution du rang pour le joueur, basiquement, je dois m'y prendre comment ? Vous auriez des pistes ? Imaginons que j'ai 3 joueurs : - le 1 er dégage un bénéfice de 100 - le 2 eme de 300 et enfin le dernier de 90 comment faire ? Ca doit être tout bête mais là sur le coup je n'ai pas d'idée Résolue ! j'ai mis un compteur ! merci RE: Créer un classement - Xenos - 11-11-2015 [edit] En fait, j'ai l'impression d'avoir pas lu la question ("L'attribution du rang"). Ce rang n'est normalement pas nécessaire: quand le joueur demande "les joueurs du 314e au 420e" alors le rang est simplement calculé à la volée lors de l'affichage, soit via un compteur dans une boucle for (for ($rang=314; ($row=$mysqli->fetch_array()); $rang++)) soit via l'index du résultat si tous les résultats sont traités d'un coup (foreach ($pdo->fetch_all() as $i=>$row) { $rang = 314+$i; /* ... traitement de la ligne $row ...*/ }). Après, on peut aussi le faire dans le SGBD, via ce genre de trick (je trouve cette approche plus élégante même): Code : SELECT (@r:=@r+1) AS rang, j.* Si t'as ces informations dans la BDD, alors le classement est un simple tri des lignes que cette BDD te renvoie: Code : SELECT * FROM joueurs_stats Si ce sont des valeurs calculées à la volée, je te conseillerai de les stocker en BDD: Code : SELECT * FROM joueurs Ce genre de requête pouvant être très lourd, le mieux est alors d'avoir une table stockant les bénéfices réalisés par chaque joueur pour la journée (par exemple) et de piocher le classement dans cette table. Après, à l'affichage, il faut simplement proposer une numérotation de page (ou assimilée) et afficher ces résultats du N au N+k eme Dans tous les cas, c'est au SGBD de faire le travail de tri et d'ordonnancement: évite de le faire dans le langage client (genre dans PHP) pour des raisons de lourdeur et de lenteur (cela obligerait PHP à lire inutilement toute la BDD par exemple). RE: Créer un classement - xanthius - 11-11-2015 Bonsoir, au tout début je procédé de la sorte (dernière requête) mais l'utilisant à la fois pour afficher le classement et sur le profil du joueur je trouvais cela lourd. Du coup j'ai opté pour l'autre solution. Je procède au calcul du classement du joueur une fois par jour et son classement je l'enregistre dans la bdd. Du coup quand les joueurs veulent voir le classement je ne fais qu'une simple selection et non de grosse requête avec jointure. Le seul soucis c'est que je ne savais pas comment assigner un rang au joueur car j'utilisais un tri mais c'est bon j'ai réussi avec le compteur ! RE: Créer un classement - Ruetasilitu - 29-11-2015 En début d'année il y avait un site pour faire celà, mais il n'était pas très cool. Malheureusement je ne le trouve plus, alors est il la encore parmis nous ? Je ne pourrais le dire,mais une chause est sure c'est qu'il y en avait un ! Bonne journée |