排名重复条目
问题描述:
我已经创建了一些代码,我发现在这个网站上的排名系统,它都工作正常,但我有一个问题。排名重复条目
它从数据库中提取所有细节,给他们一个等级,并把它们排列好,但似乎所有的细节都在一起。
所以说我有两个用户,一个拥有20枚和一个有10个,我想让它显示这样
排名第1,是约翰·金20 等级2是彼得·金10
而是它显示
1级是约翰·金20rank 1是彼得金20(实际截图:http://snag.gy/lNVNd.jpg)
他们现在订单,但只有用户名“6”有4000100金?!
只有一个用户真的拥有了第一笔金币!
帮助:(
下面是完整的代码
<?php
include("header.php");
include("connect.php");
if(isset($_SESSION['userlogin'])){
$sql = "SELECT stats.gold, stats.id, users.username, users.id FROM users, stats ORDER BY gold DESC";
$result = mysqli_query($con,$sql);
if(!$result){
echo 'SQL Query Failed';
}else{
$rank = 0;
$last_score = false;
$rows = 0;
while($row = mysqli_fetch_array($result)){
$rows++;
if($last_score!= $row['gold']){
$last_score = $row['gold'];
$rank = $rows;
}
echo "rank ".$rank." is ".$row['username']." with gold ".$row['gold']."";
}
}
}else{
echo "You must be logged in to view this page!";
?>
<?php
}
include("footer.php");
?>
答
编辑2:我看到你的问题,这是在顶部的查询。您必须使用连接才能将黄金连接到相应的用户。
将查询更改为: $ sql =“SELECT stats.gold,stats.id,users.username,users.id FROM users LEFT JOIN stats ON stats.id = users.id ORDER BY gold DESC”;
(如果表中的统计信息中的id与user-id相同,则应该使用类似ON stats.userID = users.id的内容) 您是否理解这一点?
编辑:忘记这个答案,我看到你想要相同的排名时,人们有相同数量的黄金。我的屏幕截图中没有看到问题(有不同数量的黄金和不同的排名......)您仍然可以像我一样在代码中添加
,以获得更好的概述。
行更改为:
echo "rank ".$rows." is ".$row['username']." with gold ".$row['gold']."<br>";
(因此改变$军衔$行,因为黄金已经工作,你可以在截图中看到,不是每个人都有同样的黄金!)
答
简单的解决方案:
echo "rank ".$rank." is ".$row['username']." with gold ".$row['gold']." ";
^add a space
那么对于排名的问题,改变这种:
while($row = mysqli_fetch_array($result)){
$rows++;
if($last_score!= $row['gold']){
$last_score = $row['gold'];
$rank = $rows;
}
}
对此:
while($row = mysqli_fetch_array($result)){
$rank++;
if($last_score!= $row['gold']){
$last_score = $row['gold'];
}
}
谢谢,这使得它们处于顺序:)仍然说所有用户都有4000100金币,只有用户名“6”有这个数量http://snag.gy/Q73At.jpg – 2014-09-25 10:32:14
我编辑我的答案,我最后的编辑是在顶部。我希望这能帮到您。 – 2014-09-25 10:34:29
工作!我知道这是一种加入问题,我认为这是回声而不是查询。非常感谢:) – 2014-09-25 10:38:47