我目前正在建立一个人们可以访问并进入他们已经跑步,游泳,徒步或滑雪的距离的网站。这是我的第一个网站,我对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而不是表格,因为我也将这些数据用于网站的其他部分。
答案 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++;
}
}
?>
这就是我完成的代码^