我有一个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_*
函数已弃用,请移动到PDO
或mysqli
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。