排行榜具有独特的名称

时间:2013-10-24 07:22:13

标签: php mysql mysqli unique leaderboard

我目前正在建立一个人们可以访问并进入他们已经跑步,游泳,徒步或滑雪的距离的网站。这是我的第一个网站,我对2-3个月前的编码一无所知,所以请记住这一点。

我创建了一个存储它的表,还有一个leaderboard.php,用于将数据提取到排行榜。

这就是现在的样子:

插入表格:

if (!mysqli_query($con,"INSERT INTO total(username, type, distance) VALUES ('$username', '$type', '$distance')"))

将数据提取到排行榜:

$result = mysqli_query($con, "SELECT username, distance FROM total ORDER BY distance DESC");
        $rank= 1;


if (mysqli_num_rows($result)) {
            while ($row = mysqli_fetch_assoc($result)) {
                 echo "<tr><td>{$rank}</td>
                      <td>{$row['username']}</td>
                      <td>{$row['distance']}</td></tr>";

            $rank++; 
        }
        }
    ?>  

这个问题是当有人输入他们的用户名/类型/距离时会创建新行。所以一个人可以有不同的级别。我希望排行榜能够总结每个用户不同类型活动的所有距离。

适当的编码是什么?如果可能的话,我只想改变leaderboard.php而不是表格,因为我也将这些数据用于网站的其他部分。

2 个答案:

答案 0 :(得分:1)

试试这个

SELECT username, sum(distance) as total_distance FROM total group by username ORDER BY total_distance desc;

而不是

SELECT username, distance FROM total ORDER BY distance DESC;

让我知道它的工作与否。

答案 1 :(得分:0)

为了澄清其他人是否有类似的问题,或者对此感兴趣......我不得不改变一些,以便显示距离的总和,并按总和排序,而不仅仅是最大的个人距离。

 $result = mysqli_query($con, "SELECT username, sum(distance), distance as total_distance FROM total group by username ORDER BY sum(distance) desc;");
    $rank= 1;

    if (mysqli_num_rows($result)) {
        while ($row = mysqli_fetch_assoc($result)) {
             echo "<tr><td>{$rank}</td>
                  <td>{$row['username']}</td>
                  <td>{$row['sum(distance)']}</td></tr>";

        $rank++;

        }
    }
?>

这就是我完成的代码^