如何计算分页的偏移量?

jbe*_*s94 5 php pagination

我正在编写一个我正在编写的Web服务中的分页功能,但是我缺乏数学洞察力现在正在扼杀我.我有一对夫妇键:totalItems,currentItems,currentPage,totalPages,也有几个环节first,last,previousnext.

此时,我正在进行以下计算:

  • totalItems:表中的行数
  • currentItems:limit来自HTTP请求的参数
  • currentPage:start参数除以limit参数
  • totalPages:表中的行数除以limit.(圆了,8.1页= 9页)

我认为这些计算是正确的,我正在努力的是以下内容:

  • first:HTTP请求中的start参数为1limit
  • last:应该是最后一页的第一项,我该如何正确计算?
  • previous:应该是上一页的第一项,我该怎么做?
  • next:应该是下一页的第一项,我该怎么做?

我想问的是:我的计算是否正确?我如何解决这三个问题last,previousnext

Dar*_*Bee 18

如果你使用mysql它

LIMIT offset, items_per_page
Run Code Online (Sandbox Code Playgroud)

要计算你可以使用的偏移量

$offset = ($page - 1) * $items_per_page;
Run Code Online (Sandbox Code Playgroud)

然后更换$page相应的.

持续

$last_offset = ($totalPages - 1) * $items_per_page;
Run Code Online (Sandbox Code Playgroud)

以前

$previous_offset = (($currentPage - 1) - 1) * $items_per_page;
Run Code Online (Sandbox Code Playgroud)

下一个

$next_offset = (($currentPage + 1) - 1) * $items_per_page;
Run Code Online (Sandbox Code Playgroud)

编辑:

if ($previous_offset > 0) echo '<a href="?start='.$previous_offset.'&limit='.$items_per_page.'>prev</a>';


if ($next_offset <= $totalPages * $items_per_page) echo '<a href="?start='.$next_offset.'&limit='.$items_per_page.'">prev</a>';
Run Code Online (Sandbox Code Playgroud)