0

有显示帖子的功能(请忽略语法错误)

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是计算request_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

- - - - - - - - - - - - - - - - -编辑 - - - - - - - - ------------

请注意,我知道如何创建和实现分页......这不是问题,我的框架分页系统使用偏移量而不是页码......就像 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
4

2 回答 2

0

如果每页有 m 个帖子,则帖子 k 将在 page 上ceil(k/m)。例如,如果您每页放 25 个帖子,则第 86 个帖子将在 page 上ceil(86/25) = 4

页面上帖子的偏移量将是k%m,第一个位置0和最后一个位置m-1。例如,86%25 = 11帖子 86 将是页面上的第 12 位。

于 2013-08-21T21:56:13.217 回答
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那么您只需要使用最后两个等式。第一个等式通常用于显示目的(当您需要显示用于导航等的总页数时)。

于 2013-08-21T21:58:38.947 回答