【问题标题】:Sort and group results by date按日期对结果进行排序和分组
【发布时间】:2011-09-09 04:10:16
【问题描述】:

我有一张包含博客文章的表格。我想选择最近的帖子并使用 PHP 回显它们之间的分隔符,类似于下面的示例。我正在考虑将所有结果存储在 PHP 数组中,然后回显,是否有更简单的方法通过 MySQL?

Thursday, Sept 8th
-----------------------
Post 1 
Post 2

Friday, Sept 9th
-----------------------
post 3
post 4

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    这是一个想法:

    <?php
        $sql = "SELECT * FROM posts ORDER by post_date DESC";
        $res = mysql_query($sql);
    
        $previous_date = "";
        while($post = mysql_fetch_assoc($result)){
            //here goes the date
            if($post['post_date'] != $previous_date){
                echo $post['post_date'];
                echo "<br>--------------------<br>";
                $previous_date = $post['post_date'];
            } 
            //here goes the post
            echo "Post:{$post['title']}<br>";
        }
    ?>
    

    【讨论】:

      【解决方案2】:

      我很确定 MySQL 中没有任何内容可以让您返回该结果集。如果有的话,它可能会非常有趣而且非常可怕:P

      从语义上讲,您实际上并不希望从查询中返回;查询应该返回纯数据,然后 PHP(或其他)应该负责以您想要的方式对其进行格式化。如果查询返回一些演示内容,那么您就是在混淆。

      【讨论】:

        【解决方案3】:

        您可以在数据库中创建一列来存储帖子时间的 unix 时间戳,然后按此列排序(如果您询问如何首先获取最新帖子)。您可以使用 strftime() 函数遍历现有行并将日期转换为时间戳。但是,您不应该将格式保留在数据库中,只保留数据,以防您以后想在其他地方以其他方式组织它。祝你好运。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-09-28
          • 2011-03-05
          • 1970-01-01
          • 2013-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多