[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ?дни недели
tim-ua
Подскажите как реализовать такую задачу:
есть список телепрограмм вида название, день недели, время. Нужно вывести их попорядку упорядочив по времени и дню недели. Т. е. в самом верху будет та программа до которой осталось меньше всего времени.
Список хранится в БД, проблема именно в том как упорядочить... Средствами MySql или PHP...
Подскажите как это реализовать? Ничего в голову не приходит:(




Спустя 1 час, 28 минут, 28 секунд (24.04.2010 - 23:05) Гость_justIAM написал(а):
Проще сделать это средствами MySQL
Например, как-нибудь так:

$query="SELECT name,day,time from myTable ORDER BY day desc,time desc";
$result=mysql_query($query) or die(mysql_error);

Далее выводим ответ БД.

Если нужна привязка к текущей дате, используем в запросе функцию now();
datediff -- разность в днях между двумя датами;
timediff -- разность м/у временами

Можно побаловаться в базе с запросами вида
"select date,now(),datediff(now(),date) diff from myTable order by diff desc"
до получения нужного результата

Спустя 8 часов, 3 минуты, 42 секунды (25.04.2010 - 07:09) tim-ua написал(а):
У меня телепрограмма только по дню недели, при таком запросе выведется просто список без привязки к текущему дню недели

Спустя 33 минуты, 26 секунд (25.04.2010 - 07:42) ANG3 написал(а):
OREDR BY, время храни в юникс. И выйдет всё как надо. В каждой новой запись должены быть поля; день недели, программа и тд. Потом выбираете всё, где день недели пятница, по возрастанию.


$query="SELECT * FROM `myTable` WHERE day = лялял ORDER BY day";

Спустя 50 минут, 48 секунд (25.04.2010 - 08:33) tim-ua написал(а):
Так мне нужно вывести весь список, просто упорядочить его.
К примеру у меня на каждый день недели одна телепередача, тогда должно отобразиться так:

вс (после 9:00)
пн
вт
ср
чт
пт
сб
вс (до 9:00)

Спустя 21 час, 58 минут, 57 секунд (26.04.2010 - 06:32) tim-ua написал(а):
Помогите плиз:(

Спустя 2 часа, 1 минута, 57 секунд (26.04.2010 - 08:34) justIAM написал(а):
Пока приходит в голову только следующее ужасно некрасивое, кошмарное решение (я б за такие запросы руки отрывал))):
Пусть есть табличка с исходными данными pname,pday,ptime
Создаёшь ещё одну табличку вида:
day| dNum
Вс - 1
ПН - 2
Вт - 3
....
Сб - 7

А затем формируешь запрос:

select * from t1 where dNum = dayofweek(now()) and timediff(time(now()),ptime) > 0 union select * from t1 where dNum > dayofweek(now()) union select * from t1 where dNum < dayofweek(now()) union select * from t1 where dNum = dayofweek(now()) and timediff(time(now()),ptime) < 0;



Спустя 4 часа, 10 минут, 46 секунд (26.04.2010 - 12:45) tim-ua написал(а):
как вариант, спасибо, но может возможно реализовать по-другому так, как скрипт будет выполняться при обращении к любой странице сайта
Быстрый ответ:

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