找出博客帖子显示在哪个页面上

时间:2014-08-24 22:03:03

标签: php sql blogs

通常可以找出这样的逻辑事物,但不能想到如何做我想要的事情。

所以,我有不同的博客,可以包含很多帖子。

我正在建立通知系统,并希望将用户链接到指定博客文章所在的页面。

示例:

  • 用户在博文上发表评论。博客文章ID为10。
  • 用户会收到一条通知,我想将其链接到博客文章所特定的博客和页码。

  • 该博客共有20个更新,每页显示4个。

所以在5页中,我如何确定博客帖子显示在哪个页面上?

博客帖子保存在一个表格中,所有帖子都是随机顺序,因为它们是在不同的时间添加的。

我希望这是有道理的,不能理解它。

克雷格。

1 个答案:

答案 0 :(得分:0)

如果您相信自己的帖子都有不间断的顺序ID,那么它就会出现在ceil($post_id / $posts_per_page);ceil(10 / 4);3页上。

但是,您可能无法相信ID是完全顺序的(删除后,或者可能是未发布的帖子等),因此您必须获取结果数组,然后弄明白:

$results = array(
    // Page 1
    array('id' => 1, 'title' => 'First Post'),
    array('id' => 29, 'title' => 'Foo'),
    array('id' => 53, 'title' => 'Bar'),
    array('id' => 5, 'title' => '...'),
    // Page 2
    array('id' => 87, 'title' => '...'),
    array('id' => 9, 'title' => '...'),
    array('id' => 147, 'title' => '...'),
    array('id' => 18, 'title' => '...'),
    // Page 3
    array('id' => 19, 'title' => '...'),
    array('id' => 10, 'title' => 'The One We Are Looking For!'),
    array('id' => 201, 'title' => '...'),
    array('id' => 112, 'title' => '...'),
    // Page 4
    array('id' => 13, 'title' => '...'),
    array('id' => 214, 'title' => '...'),
    array('id' => 15, 'title' => '...'),
    array('id' => 146, 'title' => '...'),
    // Page 5
    array('id' => 25, 'title' => '...'),
    array('id' => 27, 'title' => '...'),
    array('id' => 30, 'title' => '...'),
    array('id' => 32, 'title' => 'Last Post For Now'),
);

$post_per_page       = 4;
$target_post_id      = 10;
$results_key_we_need = false;
$page_in_results     = 1;

foreach ($results as $key => $value)
{
    if ($value['id'] == $target_post_id)
    {
        $results_key_we_need = $key + 1;
        $page_in_results = ceil($results_key_we_need / $post_per_page);
        break;
    }
}

echo $page_in_results;

这样,无论您的结果集如何生成,您仍然可以使用ceil(x/y)函数搜索您想要的结果页面。