организация данных о режиме работы чего нить

Sergey_2003

Новичок
Доброго времени суток All!

имеем сеть аптек (название, адрес, телефон ...)
имеем график работы каждой из них

и тут самое интересное,
как организовать хранение режима работы аптек если
некоторые работают 24х7
другие пн-пт 09:00-18:00
у третьих 09:00-21:00 обед с 13:00-14:00

если нужно помимо общей информации о аптеке выбрать список тех аптек
которые открыты именно сейчас

кто нить сталкивался с данной задачей ?
 

tz-lom

Продвинутый новичок
сделайте таблицу с запрещёнными временами работы , допустим день и диапазон когда не работают , ну или же наоборот,с разрешёнными временами работы, ну или закодируйте профили работы и храните их идентификаторы,вариантов много,вопрос в том что требуется
 

Sergey_2003

Новичок
сделайте таблицу с запрещёнными временами работы , допустим день и диапазон когда не работают , ну или же наоборот,с разрешёнными временами работы
так нельзя ибо некоторые работают 24х7 (круглосуточно без выходных), с другой стороны перечень аптек будет меняться и я не знаю какие они будут в дальнейшем

вариантов много,вопрос в том что требуется
требуется выводить полную информацию о аптеке (название, адрес, телефон режим работы) а также отобразить только те которые сейчас открыты
+ эта информация может быть изменена администратором сайта
 

tz-lom

Продвинутый новичок
можно,никто не мешает вам считать что по умолчанию аптека 24х7
информацию об аптеке храните отдельно, блоков запрета может быть несколько
 

Sergey_2003

Новичок
и того, благодаря совету tz-lom я получил вот такую не хитрую структуру, на мой взгляд вроде не плохую
PHP:
CREATE TABLE IF NOT EXISTS `drugstores` (
  `drugstore_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `drugstore_city` varchar(255) DEFAULT NULL,
  `drugstore_address` varchar(255) DEFAULT NULL,
  `drugstore_phones` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`drugstore_id`)
);
INSERT INTO `drugstores` (`drugstore_id`,`drugstore_city`,`drugstore_address`,`drugstore_phones`) VALUES
(1,'Kiev',NULL,NULL),
(2,'Lviv',NULL,NULL);

DROP TABLE IF EXISTS `work_times`;
CREATE TABLE IF NOT EXISTS `work_times` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `drugstore_id` int(10) unsigned DEFAULT NULL,
  `days` set('monday','tuesday','wednesday','thursday','friday','saturday','sunday') NOT NULL DEFAULT 'monday',
  `start_time` time NOT NULL DEFAULT '00:00:00',
  `end_time` time NOT NULL DEFAULT '00:00:00',
  PRIMARY KEY (`id`)
);
INSERT INTO `work_times` (`drugstore_id`, `days`, `start_time`, `end_time`) VALUES
(1,'monday,tuesday,wednesday,thursday,friday', '09:00:00', '13:00:00'),
(1,'monday,tuesday,wednesday,thursday,friday', '14:00:00', '18:00:00'),
(1,'saturday', '10:00:00', '17:00:00'),
(2,'monday,tuesday,wednesday,thursday,friday,saturday,sunday', '00:00:00', '24:00:00');
мы можем получить список всех аптек которые открыты в данный момент с помощью одного запроса
PHP:
SELECT `d`.* FROM `drugstores` AS `d` LEFT JOIN `work_times` AS `w` USING(`drugstore_id`)
WHERE
    FIND_IN_SET('saturday',`w`.`days`)>0
    AND '18:00:00' BETWEEN `w`.`start_time` AND `w`.`end_time`;
 

tz-lom

Продвинутый новичок
для saturday и sunday проверял?
как я вижу то в воскресенье работаем а в суботу работаем весьма забавно

редактировать такие данные не сложно,наваять на AJAX страничку которая будет их красиво визуализвовать тоже
 

tz-lom

Продвинутый новичок
Sergey_2003
мне кажется,или пост "слегка" поменялся ?
я конечно понимаю что хотелось поделиться правильным решением,но всё таки правка нужна скорее поправить ошибки рода "не туда ответил" , "не так расставил теги" и "граммарнаци в моём лице"
 

tz-lom

Продвинутый новичок
кстати,кто ему подскажет как правильнее расставить ключи,мне видно только что в `work_times` не нужен `id` и по `drugstore_id` лучьше индекс построить
 
Сверху