php - 使用分页计算php中的并列排名

标签 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。

那么在使用分页时,我该如何计算排名呢?

最佳答案

很遗憾,我没有时间直接根据您的答案进行调整,但我整理了一些内容,用于将排名索引添加到我的分页查询结果中。

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/

相关文章:

php - 使用 crypt 的散列密码在登录时不起作用,它显示不正确的密码

MySQL:从表中获取未包含的日期

mysql - 如何获取一列值依赖于另一列

ruby-on-rails - Ruby gems Will_Paginate 样式

php - WordPress的category.php页面分页显示404页面

rest - gRPC 中的分页

php - 使用 php 向 Google Cloud Messaging 发送通知给我未经授权的错误 401

php - 在mysql中查询显示纬度经度多边形

php - 点击立即付款按钮后 Paypal 会产生任何事件吗?

mysql - 将 JSON 数据逐行插入 SQL 表中