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

日付をキーとして配列に入れ、次のようにすべてを表示できます。

$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 に答える
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

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 に答える