按日期对结果进行排序和分组

时间:2011-09-09 04:10:16

标签: php mysql

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

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

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

3 个答案:

答案 0 :(得分:5)

这是一个想法:

<?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>";
    }
?>

答案 1 :(得分:0)

我很确定MySQL中没有任何内容可以让你返回结果集。如果有的话,看起来非常有趣可能非常有趣:P

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

答案 2 :(得分:0)

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