创建排行榜,我将如何显示排名/位置?

时间:2011-08-17 16:51:23

标签: php mysql html leaderboard

我正在创建一个排行榜,它将显示以下内容:排名,用户名,分数

我目前有表格会显示mysql表中数据的用户名和分数,我只是想知道如何为每个用户显示排名,数字1是得分最高的用户然后降序

谢谢!

3 个答案:

答案 0 :(得分:1)

我建议您阅读PHP/MySQL

HTML标题:打开您的表格,创建标题

<table>
    <tr>
        <td>Rank</td>
        <td>User</td>
        <td>Score</td>
    </tr>

PHP:为每个用户动态生成行

    <?php

        $result = mysql_query("SELECT user, score FROM leaderboard ORDER BY score DESC");
        $rank = 1;

        if (mysql_num_rows($result)) {
            while ($row = mysql_fetch_assoc($result)) {
                echo "<td>{$rank}</td>
                      <td>{$row['user']}</td>
                      <td>{$row['score']}</td>";

                $rank++;
            }
        }
    ?>

HTML页脚:需要关闭表格

</table>

答案 1 :(得分:0)

你可以在SQL中完成所有事情:

SET @row = 0;
SELECT
    @row := @row + 1 AS rank
    userName,
    score
FROM
    leaderboard
ORDER BY
    score DESC

答案 2 :(得分:0)

你需要 1)获得您想要排名的记录的分数 2)计算“更好”得分的记录数量(“更好”取决于你的游戏类型。篮球,得分越高越好。高尔夫,得分越低越好。)

所以,像

select records in order
for each record
    score = record.score
    rank = select count(*) + 1 from table where score_column is better than score
    display data
end for

问题是对任何大量数据执行计数(*)都很慢。但是你可以看到,一旦你获得了前两个不同分数的等级,你可以在没有查询的情况下确定代码中剩余行的等级。但请记住:你可能需要考虑关系。