Группировка предметов из mysql по дням их публикации - PullRequest
0 голосов
/ 09 февраля 2010

Итак, у меня возникла проблема с созданием списка сообщений в стиле фида с использованием PHP и Mysql. Я хочу вывести сообщения, упорядоченные и сгруппированные по дням их публикации, с указанием даты в заголовке. Например:

February 9th -----------

Posts that were posted on Feb 9th

Feb 8th -----------------

Posts that were posted on the 8th

Надеюсь, это понятно. Я постараюсь прояснить ситуацию, если кто-то запутался.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2010
$sql = "SELECT PostDataColumn1, PostDataColumn2, date_format('%Y-%m-%d', DateColumn) FROM posts_table ORDER BY DateColumn DESC";
$result = mysql_query($sql);
$curDate = "";    

while (list($col1, $col2, $date) = mysql_fetch_row($result))
{
  if ($date != $curDate)
  {
    echo "$date --------\n";
    $curDate = $date;
  }

  echo "Post data: $col1 $col2";
}
2 голосов
/ 09 февраля 2010

Тег в вопросе намекает на использование "GROUP BY". Вы не нуждаетесь в конструкции SQL GROUP BY. Вместо этого запрос должен выглядеть примерно так:

SELECT *
FROM MyPostsTable
--WHERE  some optional condition
ORDER BY PostingDate -- DESC  (if you want the newer dates first)

Затем, когда вы перебираете список результатов в PHP, вам просто нужно хранить вкладки с датой элементов, которые выводятся в данный момент, и выдавать заголовок сортировки ("9 февраля - "), в начале новой даты.

Редактировать : см. Ответ Мэтта Бриджеса для примера реализации логики, описанной выше.

...