我有问题。 。 在我的情况下,我做冠军。 。你知道,胜利者是由最高价值决定的。 。 示例:
$sql = "SELECT bla bla bla FROM `user` ORDER BY `point` DESC";
$result = mysql_query($sql);
$i=0;
while($row = mysql_fetch_array($result)) {
$1++;
echo "rank ".$i." is ".$row['name']." with point ".$row['point'].";
}
它会显示
问题。 。
答案 0 :(得分:5)
$sql = "SELECT bla bla bla FROM `user` ORDER BY `point` DESC";
$result = mysql_query($sql);
if( !$result ){
echo 'SQL Query Failed';
}else{
$rank = 0;
$last_score = false;
$rows = 0;
while( $row = mysql_fetch_array( $result ) ){
$rows++;
if( $last_score!= $row['point'] ){
$last_score = $row['point'];
$rank = $rows;
}
echo "rank ".$rank." is ".$row['name']." with point ".$row['point'].";
}
}
此代码也会正确调整排名 - 例如:
rank 1 is Adam Aarons with point 100
rank 2 is Barry Blue with point 90
rank 2 is Betty Boop with point 90
rank 4 is Charlie Chaplin with point 80
请注意,没有“等级3”,因为“查理卓别林”实际上是第四高的得分手。
如果您不想要此行为,只需将$rank = $rows;
替换为$rank++;
答案 1 :(得分:1)
ad 1.逐点,添加@curRow:= \ @curRow + 1 AS row_numbe选择当前行号,这将是排名位置
ad 2. left row title_dict on row_number = title_dict.id
其中标题字典是带有title_id和标题名称字典的表
广告3.从您的选择ID =您的ID
中选择答案 2 :(得分:1)
实际上,一种订购点数相同的玩家的非常简单的方法是在“点数”列中添加一个列“ points_last_update”,其中包含最后一次更新的时间戳。然后,您只需将“ points_last_update”添加到sql语句中的ORDER BY。这样,达到第一名的玩家将获得更高的排名,这是逻辑。
答案 3 :(得分:0)
保存最后一个分数,并确保在增加分数之前它不等于当前分数。
$sql = "SELECT bla bla bla FROM `user` ORDER BY `point` DESC";
$result = mysql_query($sql);
$i=0;
$lastscore = NULL;
while($row = mysql_fetch_array($result)) {
if ($lastscore != $row['point']){
$i++;
}
echo "rank ".$i." is ".$row['name']." with point ".$row['point'];
$lastscore = $row['point'];
}