mysql分页偏移量,如何计算分页的偏移量?
I am working on a pagination feature in a web service I am writing, but my lack of math insight is killing me now.I have a couple of keys: totalItems, currentItems, currentPage, totalPages, but also a
I am working on a pagination feature in a web service I am writing, but my lack of math insight is killing me now.
I have a couple of keys: totalItems, currentItems, currentPage, totalPages, but also a couple of links to first, last, previous and next.
At this moment, I am doing the following calculations:
totalItems: number of rows in the table
currentItems: limit parameter from HTTP request
currentPage: start parameter divided by limit parameter
totalPages: number of rows in the table divided by limit. (Rounded up, 8.1 page = 9 pages)
I assume those calculations to be correct, what I am struggling with is the following:
first: start parameter is 1 with limit from the HTTP request
last: should be the first item of the last page, how do I calculate this correctly?
previous: should be the first item of the previous page, how do I do this?
next: should be the first item of the next page, how do I do this?
What I would like to ask, is: are my calculations correct? And how do I tackle the three problems with last, previous and next?
解决方案
If you work with mysql its
LIMIT offset, items_per_page
To calculate the offset u can use
$offset = ($page - 1) * $items_per_page;
Then replace the $page accordingly.
Last
$last_offset = ($totalPages - 1) * $items_per_page;
Previous
$previous_offset = (($currentPage - 1) - 1) * $items_per_page;
Next
$next_offset = (($currentPage + 1) - 1) * $items_per_page;
EDIT :
if ($previous_offset > 0) echo 'prev';
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)