PHP:一个"Rank"系统



我有一个mysql数据库,由用户组成。在这个数据库中,有一个"分数"列。我想为用户做一个配置文件,但它会显示他们的排名。我不想做这个服务器端,所以我试图从个人资料页面本身做到这一点。这是我当前的代码:

$sql3 = mysql_query("SELECT * FROM members ORDER BY score DESC") or die("Could not allocate information!");
$rank = 0;
while(mysql_fetch_assoc($sql3)){
  $rank++;
}
echo "<b>Rank: </b>#$rank<br/>";

我也试过了:

$sql3 = mysql_query("SELECT * FROM members ORDER BY score DESC") or die("Could not allocate information!");
$rank = 0;
while(mysql_fetch_assoc($sql3)){
  $rank++;
  echo "<b>Rank: </b>#$rank<br/>";
}

无论如何,每个用户都有相同的排名#2。我有什么办法做到这一点吗?如果你需要更多信息,请发表评论,不要贬低我。谢谢。

你试过了吗:

$sql3 = mysql_query("SELECT * FROM members ORDER BY score DESC") or die("Could not allocate information!");
$rank = 0;
while(mysql_fetch_assoc($sql3)){
    $rank++;
    echo "<b>Rank: </b>#$rank<br/>";
}

使用<ol> [ordered list]标签:

<ol>
<?php while($user = mysql_fetch_assoc($sql3)): ?>
    <li><?php echo $user['name']; ?></li>
<?php endwhile; ?>
</ol>

猜测你想显示用户的某些属性[例如name或你在表中所说的],否则显示数字列表没有多大意义。

无论如何mysql_*函数已弃用,请移动到PDOmysqli

Try

while($user = mysql_fetch_assoc($sql3)) {    
  $rank++;    
  echo "<b>#$rank. $user['name'] Score: </b> $user['score']<br />";    
}

但是正如hjpotter92指出的那样,考虑使用mysql或pdo。

试试这样:

$sql3 = mysql_query("SELECT * FROM members ORDER BY score DESC") or die("Could not allocate information!");
$rank = 0;
while($row = mysql_fetch_assoc($sql3)) {
     $rank++;
     if ($row['user_id'] == $current_pages_user_id){
           echo "<b>Rank: </b>#$rank<br/>";
     }
}

我认为你真正想做的是这样的事情。

$result = mysql_query("SELECT member_name, score,
       (SELECT COUNT(*)
        FROM members ORDER BY score DESC) AS rank
FROM members
WHERE member_id = 5
LIMIT 1") or die("Could not allocate information!");
$member = mysql_fetch_assoc($result);
echo "<b>#$member['rank']. $member['name']</b> Score:  $member['score']<br />";

如前所述,请查看mysqli和pdo。

最新更新