用分页计算php中的绑定排名

时间:2015-10-10 07:17:58

标签: php mysql pagination

这是我的第一个问题,所以请说明某些事情是否不清楚,或者您需要了解更多信息。希望我已经提供了您需要的信息。

我有一个计算挪威自行车排名的页面。车手在每场比赛中获得积分,我计算他们的整体排名。到目前为止,他们已经计算了每场比赛后的排名,并在数据库中保存了他们的总分和排名。这令人沮丧,因为我必须在每次小的更改或更新后运行计算。

在更新的页面中,我在显示表时使用此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。

那么在使用分页时如何计算带有关系的排名?

1 个答案:

答案 0 :(得分:0)

很遗憾,我没有时间直接为您的答案量身定做,但这是我为在分页查询结果中添加排名索引而汇总的一些内容。

foreach($queryResults as $index=>$result)
{
    $currentPage = ceil( $_POST['pageOffset'] / $_POST['limit'] );
    $rank = ($index+1)+($_POST['limit']*($currentPage)));       
}