0

我有以下一组查询结果:

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 循环中是否有一种简单有效的方法来执行此操作?

4

3 回答 3

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 />';
    }
}
于 2012-11-17T19:32:22.267 回答
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/>';
}
于 2012-11-17T19:24:46.483 回答
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 />';
}

您还可以更改查询,以便按日期对它们进行排序,循环遍历结果,并且每次日期与打印日期之前的迭代不同时。

于 2012-11-17T19:26:47.097 回答