[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Интересная тема о реализации сортировки
m4a1fox
Доброго уже вечера господа. Прошу помощи и совета с логикой т. к. один явно не потяну. Собственно вот такой вопрос.
Ситуация №1. Есть страница. На странице выводятся 6 фоток с БД за неделю. То есть меняется неделя, меняются фотки. Сверху страницы - (неким образом) нужно запихать список недель, да бы пользователь смог выбрать из списка необходимую неделю (как это записать еще не знаю (то есть или - Например (с 1 июня - 8 июня) или ка-то еще...)) и ему отобразились фотки этой недели. Далее, с каждой недели выбирается (неким образом) победитель, и эта запись занимает первое место в списке необходимой недели.

Ситуация №2. Сверху страницы также необходимо разместить победителей по месяцу. То есть суть такая же как и в ситуации №1. Выбирается победитель за месяц (например - Август) и эта запись выводится первой из списка участников (фото) месяца. Также список. Например (юзер нажал на список, выбрал месяц - июль) и ему вывелись из БД все фотки, которые в июльские недели (4) занимали первое место...

Черт. В общем, у кого есть время и идеи как это реализовать, прошу не стесняться.... По моему тут самое сложное это как-то задействовать выборку по неделям, то есть как-то надо написать запрос, что бы он вытаскивал записи по заданным юзером неделям.... Все идеи и предложения принимаются... Спасибо за внимание.



Спустя 43 минуты, 13 секунд (14.06.2011 - 19:03) m4a1fox написал(а):
Полазил по googl'y и узнал оказывается есть метод group by WEEK. Но только что-то мало про него инфы. Буду рыть дальше. Господа, ну будьте поактивнее....smile.gif

Спустя 9 минут, 39 секунд (14.06.2011 - 19:13) m4a1fox написал(а):
Invis1ble
Есть идеи????? huh.gif Надо покурить!

Спустя 12 минут, 15 секунд (14.06.2011 - 19:25) Invis1ble написал(а):
m4a1fox
В SQL есть куча функций для работы с датами и временем, нужно лишь составить подходящее условие в запросе. Т.е. отсылаешь например методом пост дату (или промежуток, например минимальное и максимальное число), а в обработчике подставляешь в запрос данные из $_POST. Для недели что-то вроде этого (в $_POST['date'] - начало недели, к примеру 06-01-2011):
$qSelect = "
SELECT *
FROM `table`
WHERE `date` > '"
. mysql_real_escape_string($_POST['date']) . "' AND
`date` < ADDDATE('"
. mysql_real_escape_string($_POST['date']) . "', INTERVAL 7 day)";

Учти, это лишь пример, чтобы было видно возможности. Я не особо помню все функции, так что читай маны - наверняка есть что-то и пооптимальней.

Спустя 1 минута, 43 секунды (14.06.2011 - 19:27) m4a1fox написал(а):
Invis1ble
Ок! И за это спасибо! Видимо это на недельку я завис с этой проблемкой:)

Спустя 3 минуты, 1 секунда (14.06.2011 - 19:30) Invis1ble написал(а):
Если на уровне php вычислишь начало и конец недели, а это кстати довольно просто делается, только я не помню как smile.gif - то передаешь начало недели и конец, и их подставляешь в запрос... В php копай в сторону strtotime()... Вроде это оно.

Спустя 10 минут, 53 секунды (14.06.2011 - 19:41) m4a1fox написал(а):
Invis1ble
Ок! Спасибо! Сейчас необходимо покинуть Вашу дружную компанию... обстоятельства... но вечером вернусь. Это еще не конец ph34r.gif

Спустя 14 минут, 36 секунд (14.06.2011 - 19:55) Invis1ble написал(а):
m4a1fox
Вот пример для недели набросал:
$date = '14.06.2011'; // это будет $_POST['date']

list($day, $month, $year) = explode('.', $date);
$time = mktime(0, 0, 0, $month, $day, $year); // переводим в timestamp

$mondayTime = strtotime('last Monday', $time); // timestamp начала недели
$sundayTime = strtotime('next Sunday', $time); // timestamp конца недели

$qSelect = "
SELECT *
FROM `table`
WHERE TIMESTAMP(`date`) > "
. (int)$mondayTime . " AND
TIMESTAMP(`date`) < "
. (int)$sundayTime;

На входе произвольная дата, вычисляется понедельник и воскресенье этой недели, далее подставляется в запрос.
В SQL я что-то не нашел аналогов strtotime(), может плохо искал :)

Спустя 17 часов, 34 минуты, 28 секунд (15.06.2011 - 13:30) m4a1fox написал(а):
Оцените задумку.... В админке при добавлении фотки методом select выбираем месяц, затем рядом выбираем неделю (1, 2, 3, 4). После этого сохраняем данные в таблицу.
А на странице сортировки делаем форму (select (месяц) + select (неделя (1, 2, 3, 4)) + кнопка (поиск)). После чего из БД выбираем записи где month = month (из формы отправленной) & week = week (№ отправленной недели)? Как Вам? Какие будут замечания?

Спустя 2 часа, 56 минут, 46 секунд (15.06.2011 - 16:27) Invis1ble написал(а):
Можно и так сделать. Зависит от твоей фантазии. Я бы каледариком наверно сделал, при клике на ячейку отправляется аяксом дата в обработчик.
Как-то так. Вообще все зависит от твоей фантазии.
Быстрый ответ:

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