按日期(天)对数据进行排序/分组


Sorting/Grouping data by date (day)?

我正在创建一个广告网站。我想有一个这样的列表

星期六10/22/2011 (header)

产品名称1-city - 100$

产品名称2-city - 74$

产品名称3-city - 500$

Sunday 10/23/2011 (header)

产品名称4-city - 150$

产品名称5-city - 220$

产品名称6-city - 10$

我的代码是排序列表完美从最新到最旧的,但我想添加一些东西到while循环打印出的头(这是粗体)像(星期六10/22/2011)。基本上,我想按照发布日期对列表进行分组下面是我的代码:

$sql = "SELECT post_id,city, title, price, imgurl FROM md_post WHERE category='$cat' AND city='$city' ORDER BY timeStamp desc";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
    {
echo "<a href='adid.php?id=".$row['post_id']."'>". $row['title']. " - ". $row['price']." - ".$row['city']."</a>";
}
  1. 添加时间戳到您的选择字段
  2. 引入保存上次使用时间戳的新变量
  3. while循环检查日期形式最后使用的时间戳是否与当前行不同,如果是,根据当前行时间戳打印标题,将其分配给最后使用的时间戳,然后打印其余部分。

假设timeStamp是unix时间戳:

$sql = "SELECT post_id, city, title, price, imgurl, timeStamp FROM md_post WHERE category='$cat' AND city='$city' ORDER BY timeStamp desc";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
    if (!isset($dateold) || $dateold != date('d',$row['timeStamp']) {
        echo '<strong>'.date('l  m/d/Y',$row['timeStamp']).</strong><br />;
    }
    echo "<a href='adid.php?id=".$row['post_id']."'>". $row['title']. " - ".$row['price']." - ".$row['city']."</a>";
    $dateold = date('d',$row['timeStamp']);
}

当它不是unix时间戳,而是一个有效的时间时,您可以将timeStamp的第一次出现更改为UNIX_TIMESTAMP(timeStamp)