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

时间:2011-10-23 10:14:12

标签: php mysql

我正在为广告创建一个网站。我希望有一个像这样的列表

2011年10月22日星期六(标题)

产品名称1-city - 100 $

产品名称2-city - 74 $

产品名称3-city - 500 $

2011年10月23日星期日(标题)

产品名称4-city - 150 $

产品名称5-city - 220 $

产品名称6-city - 10 $

我的代码是从最新到最旧的顺序排序列表,但我想在while循环中添加一些内容以打印出标题(以粗体显示)(2011年10月22日星期六)。 基本上我想按照发布日期的名称对列表进行分组 这是我的代码:

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

2 个答案:

答案 0 :(得分:2)

  1. 为您的选择字段添加时间戳
  2. 引入保存上次使用的时间戳的新变量
  3. while循环中检查上次使用的时间戳的日期格式是否与当前行不同,如果是,则根据当前行时间戳打印标题,将其分配给上次使用的时间戳,然后打印其余时间。

答案 1 :(得分:1)

假设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)