Задать вопрос
Quber
@Quber
PHP Team lead

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

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

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

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

Названия месяцев также должны выводиться как в примере. У каждой новости в базе есть дата в datetime формате. Интересует наименее затратный способ по ресурсам. Искал, но ничего путного не нашёл. Буду благодарен любого примера или ссылочки.
Спасибо.
  • Вопрос задан
  • 2809 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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 )

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽