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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранение циклически повторяющихся событий 
:(
    Опции темы
mus
Дата 9.10.2008, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Делаю что-то вроде органайзера. Хранится в органазйере будут задачи, которые мне следует делать циклически, как то: 
* принимать таблетку А три раза в день ежедневно
* ходить на бассейн ежедневно (1 раз в день)
* ходить на бокс по вторникам, четвергам и пятницам.
* раз в неделю поход в сауну
* через день принимать таблетку Б

Далее все эти пункты будут выдаваться на экран в виде галочек. Выполнил пункт - отметил галочку, сохранил форму, одной задачей за день меньше.

Хотелось бы понять, как изящно организовать работу с циклическими событиями, а именно - как изящнее сие заполнить, хранить и обрабатывать.

Если есть какие библиотеки, статьи, подходы и прочее - будьте добры, поделитесь.
PM MAIL   Вверх
bars80080
Дата 9.10.2008, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



а что тут сложного (да ещё и в библиотеках?)

создаёшь таблицу с циклическими расписаниями, в которые вводишь время срабатывания и периодичность
создаёшь таблицу с текущими заданиями
создаёшь скрипт, который по условиям описанным в первой таблице заносит задания во вторую таблицу
форма с галочкой - просто удаляет текущее событие
PM MAIL WWW   Вверх
ksnk
Дата 9.10.2008, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Изящества будет не очень много smile 

Я бы делал примерно так.
 - хранится таблица с набором правил
 -- {действие}/{правила расчета периодов}/{Дата начала}/{активно}
      Таблетка A / день через день
      Таблетка Б / понедельник, четверг
   ...

Список правил расчета фиксированный!

По списку правил расчитываем реальное расписание на ближайший период... (3 месяца?) и вот его уже заносим в таблицу-календарь {время/событие/ действие/ галочка} После расчета переносим дату начала "периодического события" на "уже просчитанное время". Каждый месяц "дорасчитываем" периодические события в календарь...

Календарь должен быть доступен для редактирования вручную. К примеру можно и пропустить бокс 1 января, таблетки могут неожиданно кончится, и т.д. 

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


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
mus
Дата 10.10.2008, 05:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ksnk, можно пример правил расчета и таблицы?
Из описания ничего не понял, но заинтриговало то, что есть исключительные ситуации.
PM MAIL   Вверх
ksnk
Дата 10.10.2008, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Для начала можно написать простой календарь, в который можно вставлять любые события вручную. Без периодических событий.
Код

CREATE TABLE  `xxx` (
 `id` INT NOT NULL AUTO_INCREMENT ,
 `event` TEXT NOT NULL ,
 `eventlink` INT NOT NULL ,
 `start` DATETIME NOT NULL ,
 `fin` DATETIME NOT NULL ,
 `flags` SMALLINT NOT NULL ,
PRIMARY KEY (  `id` )
);

- event - текстовое описание события. Возможно стоит ввести 2 поля с описанием - короткое и расширенное...
- eventlink - ссылка на правило, по которому генерируется событие. Пока - не нужно smile
- start - время начала события
- fin - время окончания события
- flag - какие-нибудь отметки, ставяться вручную, смысл их мне пока неясен, но скорее всего - пригодяться smile

Собственно календарь - добавить событие, убрать событие... 

Когда заработает - можно навернуть периодические события. В форму добавления события добавить селектбокс со списком "периодов". При обработке формы добавлять не одно, а сразу кучу...

smile 
Какие примеры, я-ж тут прямо на коленке все это и придумал. Но мне пока кажется. что схема вполне работоспособна...



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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