【问题标题】:Leaderboard with unique names具有唯一名称的排行榜
【发布时间】:2013-10-24 07:22:12
【问题描述】:

我目前正在构建一个网站,人们可以访问该网站并输入他们跑步、游泳、远足或滑雪的距离。这是我的第一个网站,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 而不是表格,因为我也将这些数据用于网站的其他部分。

【问题讨论】:

    标签: php mysql mysqli unique leaderboard


    【解决方案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;
    

    让我知道它是否有效。

    【讨论】:

    • 感谢您的回复!它现在以正确的顺序显示分组的用户名,但距离不显示
    • 我还添加了距离 "SELECT username, distance, sum(distance) as total_distance FROM total group by username ORDER BY total_distance desc;"现在它可以工作了。感谢您的帮助!
    • @Arborelius 欢迎。如果有帮助,您可以投票并选择此答案。
    【解决方案2】:

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

     $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++;
    
            }
        }
    ?>
    

    这是我完成的代码^

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-27
      • 1970-01-01
      • 2020-06-15
      • 1970-01-01
      • 2018-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多