这是我的第一个问题,所以请说明某些事情是否不清楚,或者您需要了解更多信息。希望我已经提供了您需要的信息。
我有一个计算挪威自行车排名的页面。车手在每场比赛中获得积分,我计算他们的整体排名。到目前为止,他们已经计算了每场比赛后的排名,并在数据库中保存了他们的总分和排名。这令人沮丧,因为我必须在每次小的更改或更新后运行计算。
在更新的页面中,我在显示表时使用此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。
那么在使用分页时如何计算带有关系的排名?
答案 0 :(得分:0)
很遗憾,我没有时间直接为您的答案量身定做,但这是我为在分页查询结果中添加排名索引而汇总的一些内容。
foreach($queryResults as $index=>$result)
{
$currentPage = ceil( $_POST['pageOffset'] / $_POST['limit'] );
$rank = ($index+1)+($_POST['limit']*($currentPage)));
}