Quber
@Quber
PHP Team lead

Как вывести строки из базы данных по месяцам?

Реализация PHP. Есть таблица новостей.
Нужно её вывести в таком формате:
Август:
Новость 1
Новость 2
Новость 3

Июль:
Новость 4
Новость 5
Новость 6

Июнь:
Новость 7
Новость 8

Названия месяцев также должны выводиться как в примере. У каждой новости в базе есть дата в datetime формате. Интересует наименее затратный способ по ресурсам. Искал, но ничего путного не нашёл. Буду благодарен любого примера или ссылочки.
Спасибо.
  • Вопрос задан
  • 2785 просмотров
Решения вопроса 1
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Наименее затратный:
select * from news order by `date_pub` ASC, где date_pub собственно дата публикации новости.
(Если новости не публиковались задним числом - можно и по id сортировать)

А далее цикл в php вида
$last_printed_month = '';
foreach ($news_list as $item) {
  $curr_month = date('Y-m',$item->date_pub);
  if ($curr_month!=$last_printed_month) {
   echo ($last_printed_month = $curr_month);
  }
  echo $item->title;
}
В вашем тестовом примере ничего не написано про год, но мне кажется он нужен :)
Если хочется писать месяц именно русскими буквами - надо написать крошечную функцию которая сконвертирует порядковый номер месяца - в строку :)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
bejoy
@bejoy
SELECT ... FROM ... WHERE ... GROUP BY MONTH( datetime )
SELECT ... FROM ... WHERE ... GROUP BY DATE_FORMAT( datetime, '%m' )
SELECT ... FROM ... WHERE YEAR( datetime ) = 2014 GROUP BY MONTH( datetime )
SELECT ... FROM ... GROUP BY EXTRACT( YEAR_MONTH FROM datetime )
SELECT ... FROM ... GROUP BY DAYOFMONTH( datetime )

Укажите признак сортировки внутри месяца.
Развлекайтесь =)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы