有一个显示帖子的功能 (请求忽略语法错误)
function get_all_posts ($offset = 0 )
{
$q = $db->query("select * from tbl limit 10 offset $offset ");
$template->load_view('posts' , $q );
}
现在假设我有一个名为get_one_post
的函数,其中一个帖子偏移量和总帖子数量为参数
function get_one_post($requested_post_offset = 0 , $totl_posts_count = 0 )
{
}
基本上我想在这个get_one_post
中做的是计算requested_post的页面偏移量并调用get_all_posts
函数,所以它显示包含该特定帖子的页面
function get_one_post($requested_post_offset = 0 , $totl_posts_count = 0 )
{
$page_offset = // calculation( $requested_post_offset , $totl_posts_count );
get_all_posts ($page_offset);
}
我可以说
get_all_posts ($requested_post_offset );
但是它显示了请求的帖子作为页面中的第一篇帖子...但我想成为它在分页中的自然位置而不是第一个
我应该如何处理calculation
部分?
--------------------------------- EDIT ------------- ---------------
请注意我知道如何创建和实施分页......这不是问题所在 我的框架分页系统使用偏移而不是页码。 就像per_page是10一样,分页链接就像
page 1 => page.php?offset=0
page 2 => page.php?offset=10
page 3 => page.php?offset=20
如果$requested_post_offset
为15则在此示例中为页面偏移是10 我应该得到
的结果page 2 => page.php?offset=10
答案 0 :(得分:0)
如果每页有m个帖子,则帖子k将在页面ceil(k/m)
上。例如,如果您每页放置25个帖子,则帖子86将位于页面ceil(86/25) = 4
上。
页面上帖子的偏移量为k%m
,其中第一个位置为0
,最后一个m-1
。例如,86%25 = 11
所以帖子86将是页面上的第12个。
答案 1 :(得分:0)
以下是分页中通常使用的一些通用公式:
total_pages = ceil(row_count / row_limit_per_page)
page_at_offset = ceil((zero_based_offset + 1) / row_limit_per_page))
zero_based_offset_for_a_given_page = (page_at_offset - 1) * row_limit_per_page
请注意,我在这里将页码视为从1开始。
如果您的输入是zero_based_offset
(您感兴趣的行的从零开始的偏移量)和row_limit_per_page
,那么您只需要使用最后两个方程式。第一个等式通常用于显示目的(当您需要显示导航等的总页数时)。