Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ВЫборка из БД и "удобное" отображение данных 
:(
    Опции темы
Snowball
Дата 29.1.2008, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Цитата

В базе данных mySQL имеется таблица tvtable:
air    datetime
title    varchar(50)

В ней хранится программа передач. Например:
2003-10-20 17:00    Factor
2003-10-20 18:00    Factor
2003-10-20 19:00    Form
2003-10-21 14:00    Factor
2003-10-21 15:00    Form
2003-10-21 17:00    Factor
2003-10-22 17:00    Factor
2003-10-22 18:00    Factor
2003-10-22 19:00    Factor
2003-10-23 18:00    Factor

На запрос "Factor" PHP-скрипт должен вернуть
пн-ср: 17:00
пн,ср-чт: 18:00
вт: 14:00
ср: 19:00



Помогите реализовать! Хотя бы алгоритмом. 
Заранее благодарен.
PM MAIL   Вверх
NNaarreekk
Дата 29.1.2008, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: нет
Всего: 3



Лучше измени способ хранения в базе, а то так очень сложно будет учесть все!

Я тоже что-то вроде этого сделал и из за неудобного хранения данных долго мучался!
PM MAIL WWW   Вверх
SelenIT
Дата 30.1.2008, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 9
Всего: 401



В том виде, как есть, имхо, проще всего сделать сделать следующее:
Код

SELECT air, WEEKDAY(air) as weekday, DATE_FORMAT(air, '%H:%i') as airtime
FROM tvtable
WHERE title = 'Factor'
AND air BETWEEN (CURDATE() - INTERVAL WEEKDAY(CURDATE()) DAY) AND (CURDATE() + INTERVAL (7-WEEKDAY(CURDATE()) DAY) /* текущая неделя */
GROUP BY airtime, weekday
ORDER BY airtime, weekday

Потом в скрипте проверять, идут ли дни недели для одного и того же времени подряд (в цикле сравнивая их с предыдущим значением) и в зависимости от этого формировать диапазон или через запятую, или через дефис. Названия дней недели тоже подставлять в скрипте, из массива. Лично я бы собирал результаты в ассоциативный массив "время => массив дней, когда это время встречается в программе" - так будет проще оперировать диапазонами и менять порядок вывода.

Оптимизировать структуру базы можно, разделив дату и время на разные поля, и поставив индексы на оба из них.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0439 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.