0

我有一个由用户组成的 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。我有什么办法可以做到这一点吗?如果您需要更多信息,请发表评论,不要贬低我。谢谢。

4

5 回答 5

0

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

$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。

于 2013-03-30T21:11:01.187 回答
0

你有没有尝试过:

$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/>";
}
于 2013-03-30T20:30:38.770 回答
0

只需使用<ol>[有序列表] 标签:

<ol>
<?php while($user = mysql_fetch_assoc($sql3)): ?>

    <li><?php echo $user['name']; ?></li>

<?php endwhile; ?>
</ol>

猜测您想要显示用户的某些属性[例如name,或者您在表格中调用它的内容],否则显示数字列表没有多大意义。

无论如何mysql_*功能已被弃用,请移至PDOmysqli

于 2013-03-30T20:34:59.580 回答
0

尝试这样的事情:

$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/>";
     }
}
于 2013-03-30T20:35:25.630 回答
0

尝试

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

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

于 2013-03-30T20:35:54.897 回答