【问题标题】:PHP Date-Dependent PaginationPHP 日期相关分页
【发布时间】:2010-10-08 09:10:47
【问题描述】:

我有一个站点,它在 sql 数据库中存储了一堆记录,我想根据日期将其拉到页面上,该日期在 sql 中存储为 Y-m-d。但是,我想根据天对结果进行分页。

所以对于索引,我想显示当天的所有结果,为此我将使用 php date() 函数作为我的查询中的 WHERE。但是我在进行分页时遇到了障碍。我想在底部有按钮可以通过 get 转到下一页,所以 index.php?page=2 会在明天,但我无法弄清楚如何从我的 WHERE 中的数据库中可靠地选择“明天”。

看,我打算使用 date("U") 在第一页上以秒为单位获取第一天的 unix 时间,然后添加 3600*$_GET['page'] 以增加日期下一页,但这似乎是一种草率的做法,可能会弄乱我。这是唯一的方法还是有更好、更实用的解决方案 - 非常感谢我感谢它。

【问题讨论】:

    标签: php sql html pagination paging


    【解决方案1】:

    这就是我设法为我的网站修复它的方法

    //'page' is a GET variable from url
    if($page<=1) {
      $datemax = time();
      $datemin = time() - (1 * 2592000); //2592000 being seconds in a month
    }
    else{
      $datemax = time() - (($page - 1) * 2592000);
      $datemin = time() - ($page * 2592000);
    }
    

    然后显然查询看起来像

    SELECT * FROM posts WHERE dateposted >=$datemin AND dateposted <=$datemax
    

    【讨论】:

      【解决方案2】:

      你用 strtotime 做实验:

      $sqldate = date('Y-m-d', strtotime('+2 days'));
      

      【讨论】:

      • strtotime 搞砸了,因为我认为这不是您在日期函数中实现它的方式,无论 $page 是什么,我都会得到 1969-12-31
      • 嗯,它对我有用。 date 有两个参数:一个格式化字符串和一个可选的时间戳。 strtotime 从几乎任意字符串生成时间戳。 (有时感觉就像是魔法......)
      • 我遇到的问题是将变量嵌入到 strtotime 中,例如 strtotime("+'$page' days") 没有它
      • 你的 '' 太多了。正确的语法是: strtotime("+$page days") (或者,如果您想绝对确定或使用数组: strtotime("+{$page} days"); )
      【解决方案3】:

      如果第 2 页是明天,那么您将看到如下内容:

      $days_ahead = $page - 1;
      $query = "... WHERE date = DATE(NOW()) + INTERVAL $days_ahead DAY ...";
      

      请注意,这在第一页上也可以正常工作(假设 $page 被默认为 1),它会在今天的日期上添加 0 天。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-05
        • 1970-01-01
        相关资源
        最近更新 更多