PHP - 读取日期结果并添加不同的样式

时间:2012-11-17 19:20:16

标签: php

我从查询中得到以下一组结果:

name        date_added
----        ---------
dan         15/11/2012
jane        15/11/2012
ted         14/11/2012
larry       13/11/2012
corben      13/11/2012

这些结果来自一个简单的MySQL查询,我显示结果,例如。

while($users = mysql_fetch_array($result)){

    echo $users[name].' -- '.$users[date_added];

}

这会生成一个简单的列表,例如

dan    --     15/11/2012
jane   --     15/11/2012
ted    --     14/11/2012
larry  --     13/11/2012
corben --     13/11/2012

我想要做的是从第一个开始,以不同的日期结束结果,例如

15/11/2012
dan    --     15/11/2012
jane   --     15/11/2012

14/11/2012
ted    --     14/11/2012

13/11/2012
larry  --     13/11/2012
corben --     13/11/2012

日期每天都在变化,因为这是一个活文件,因此没有任何硬编码。

在while循环中有没有一种简单有效的方法呢?

3 个答案:

答案 0 :(得分:0)

$dates = array();
while($users = mysql_fetch_array($result))
{
  $key = $users['date_added'];
  if (!isset($dates[$key])) $dates[$key] = array();
  $dates[$key][] = $users[name].' -- '.$users[date_added];
}

// free mysql results
// then iterate $dates to print

foreach ($dates as $date=>$arr)
{
  echo $date.'<br/>'.implode($arr).'<br/><br/>';
}

答案 1 :(得分:0)

你可以把它放在一个日期为键的数组中,然后像这样显示所有这些:

$users = array();
while ($user = mysql_fetch_array($result)) {
    if (!isset($users[$user['date_added'])) $users[$user['date_added']] = array();
    $users[$user['date_added']][] = $user['name'];
}
foreach ($users as $date => $names) {
    echo $date . '<br />';
    foreach ($names as $name) {
        echo $name . '<br />';
    }
    echo '<br />';
}

您还可以更改查询,以便在日期对其进行排序,循环显示结果,并且每次日期与您打印日期之前的迭代不同。

答案 2 :(得分:0)

您可以使用mySQL DISTINCT ... Fx:

$dates = mysql_query("SELECT DISTINCT date_added FROM your_table ORDER BY date_added ASZ");

$user_date = array();
while ($row = mysql_fetch_array($dates)) {
  array_push($user_date, $row['date_added']);
}

foreach ($user_date as $date) {
    echo $date . '<br />';
    $users = ("SELECT name, date_added FROM your_table WHERE date_added = '$date' ORDER BY date_added ASC");
    while($row = mysql_fetch_array($users)) {
      echo $row['name'] . ' -- ' . $row['date_added'] . '<br />';
    }
}