0

可能重复:
在 PHP/MySQL 中按天分组列出日记事件

我有一个数据库,其中包含我所在城镇的现场乐队演出,每场演出都作为记录存储在我的 MySQL 数据库中。

我想按天分组以查看我网站上的演出。但是 GROUP BY 函数只会显示 1 条记录。如何显示一个日期内的所有演出?

我的 MySQL 结构..

ID  date                    content
1   2012-12-02 00:00:00     Gig 1
2   2012-12-02 00:00:00     Gig 2
1   2012-12-03 00:00:00     Gig 1
2   2012-12-03 00:00:00     Gig 2

我想这样表现出来..

-- Sun 02 December 2012 --
Gig 1
Gig 2

-- Mon 03 December 2012 --
Gig 1
Gig 2
4

2 回答 2

0

试试这个

   SELECT  * 
   FROM    your_table
   WHERE  date = '".$your_variable_of_selectedDate."'
   GROUP BY date
   ORDER BY date

编辑:如果你没有日期变量,那么只需给出一个具体的日期

   SELECT  date , content 
   FROM    your_table

   GROUP BY date
   ORDER BY date
于 2012-12-02T17:57:17.343 回答
0

不要在数据库层中对结果进行分组,而是在表示层中进行。例如,使用 PDO:

$dbh = new PDO("mysql:dbname=$dbname", $username, $password);

$qry = $dbh->query('
  SELECT   UNIX_TIMESTAMP(date), content
  FROM     gigs
  WHERE    date > NOW()
  ORDER BY date
');

if ($qry->execute()) {

  // output headers
  echo '<h1>Upcoming gigs</h1>';

  $row = $qry->fetch();
  while ($row) {
    $current_date = $row['date'];

    // output $current_date initialisation
    echo '<h2>', date('D d F Y', $current_date), '</h2><ul>';

    do {
      // output $row details
      echo '<li>', htmlentities($row['content']), '</li>';
    } while ($row = $qry->fetch() and $row['date'] == $current_date);

    // output $current_date termination
    echo '</ul>';
  }

  // output footers

}
于 2012-12-02T18:18:06.870 回答