[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как грамотно вывести новости
Prettynim
Скажите, мне нужно сделать выборку из базы данных новостей за последние 7 дней. Но если,например, в субботу или воскресенье у меня нет новостей, то получится нужно выводить за предыдущую пятницу или четверг, ну т.е. если за один день нету то автоматически выводить за другие предыдущие дни. Даты у меня в базе в формате datetime -> 2004-12-15 09:18:36, помогите как сделать нормальный запрос или хотя бы логику подскажите.



Спустя 7 минут, 52 секунды (10.12.2010 - 11:12) kovaldm написал(а):
Первое, что пришло в голову. Это то что нужно плясать от числа 2004-12-15.
То есть может в массив засунуть последние 7 существующих дней и выводить новости по этим дням. Как-то так.

Спустя 2 минуты, 44 секунды (10.12.2010 - 11:15) Prettynim написал(а):
да, но проблема у меня в том что обязательно должно быть за последние 7 дней, потому что дизайн сайта именно для 7 дней, вот и получается что если одного дня не будет то в дизайне будет пустой блок. поэтому дни нужно брать именно те которые уже есть в базе данных.

Спустя 8 минут, 42 секунды (10.12.2010 - 11:23) kovaldm написал(а):
Семь последних записей?

Спустя 8 минут, 25 секунд (10.12.2010 - 11:32) Prettynim написал(а):
нет, именно разное количество новостей по дате. Т.Е. будут блоки, точнее 7, и там будут заголовки из дат, а по каждой дате новости причем разное их количество.Блоки переключаются на JavaScript и таким образом новости без перезагрузки меняются, поэтому нужно сразу все новости на страницу вывести

Спустя 9 минут, 8 секунд (10.12.2010 - 11:41) Prettynim написал(а):
в принципе есть возможность отрезать все кодом, сделать вложенный массив, разбитый по дате и вывести не все его элементы, но тогда у меня другой вопрос на эту же тему- как вывести хотя бы не все новости, а то смысл выводить все новости за все года, а потом резать массив, я думаю лишняя нагрузка

Спустя 2 минуты, 52 секунды (10.12.2010 - 11:44) inpost написал(а):
Prettynim
Странная какая-то идея, нигде такого не видел...

Спустя 7 минут, 19 секунд (10.12.2010 - 11:51) Prettynim написал(а):
ну пока что такая идея, без лишних запросов можно сделать все через массив, но в этом единственном запросе все равно желательно как то избавиться от лишнего. а то уж там получится слишком много ненужного.

Спустя 29 секунд (10.12.2010 - 11:52) kovaldm написал(а):
Ну тогда такая логика:
1. Вытаскиваем из БД все новости, надо как-то ограничить запрос, чтобы лишнего не вытаскивать.
2. Записываем их в массив, в котором ключом будет "2004-12-15 09:18:36"
3. Сортируем
4. Начинаем циклом перебирать массив сравнивая ключи при помощи регулярок, нас интересует день 2004-12-15 09:18:36
5. В цикле создается двухмерный массив с первым ключом 15(к примеру)
6. Когда число поменяется на 14 новости на эту дату начнут записываться в ячейку с ключом 14 и так семь раз.
7. В итоге получим двухмерный массив из семи элементов, каждый из которых будет содержать все новости на соответствующий день.

Надеюсь я понятно объяснил.

Может быть это можно одним sql-запросом решить, но я такого не знаю.

Говнокод-с.

Спустя 3 минуты, 42 секунды (10.12.2010 - 11:55) Prettynim написал(а):
да понятно, спасибо, остается все таки для ускорения работы сделать нормальный запрос, чтобы чуть меньше был результат вывода из бд

Спустя 2 минуты, 2 секунды (10.12.2010 - 11:57) kovaldm написал(а):
Бери, скажем, новости за последние 2 месяца.

Спустя 3 минуты, 24 секунды (10.12.2010 - 12:01) Prettynim написал(а):
тоже верно smile.gif думаю за месяц или два новости хотя бы будут добавляться
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.