这是我在这里的第一个问题,所以如果有什么不清楚或者您需要了解更多,请告诉我。希望我已经提供了您需要的信息。
我有一个计算挪威自行车排名的页面。车手在每场比赛中获得积分,我计算他们的总排名。到目前为止,每场比赛后都会计算他们的排名,并将他们的总分和排名保存在数据库中。这一直令人沮丧,因为我必须在每次小的更改或更新后运行计算。
在更新后的页面中,我在显示表格时在一个循环中使用此 PHP 代码计算他们的总分和排名(所有三个排名变量在循环之前都设置为 0):
$rank_tmp++;
if ($rankpoints!=$row["points"]) {
$rank=$rank_tmp;
}
echo $rank
这个简单的代码运行良好,并给我排名。
挑战在于当我使用分页将结果拆分到每一页时。
在我添加的查询和代码中:
LIMIT $starting_position, $records_per_page";
$starting_position=($_GET["page_no"]-1)*$records_per_page;
为了让排名在第二页继续,我扩展了循环:
$rank_tmp++;
if ($rankpoints!=$row["points"]) {
$rank=$rank_tmp;
}
echo $rank + $starting_position;
这按预期工作,如果我设置“$records_per_page=50”,第二页上的第一个骑手将获得第 51 名,依此类推。
问题是:如果骑手 50 和 51 的积分相同,则骑手 51 仍将获得排名 51,而不是他应该获得的 50。
那么在使用分页时,我该如何计算排名呢?
最佳答案
很遗憾,我没有时间直接根据您的答案进行调整,但我整理了一些内容,用于将排名索引添加到我的分页查询结果中。
foreach($queryResults as $index=>$result)
{
$currentPage = ceil( $_POST['pageOffset'] / $_POST['limit'] );
$rank = ($index+1)+($_POST['limit']*($currentPage)));
}
关于php - 使用分页计算php中的并列排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33051396/