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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите правильно составить алгоритм загрузки 
:(
    Опции темы
letsgo
Дата 5.7.2010, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Коллеги, прошу помощи в составлении алгоритма (последовательности действий) решения следующей задачи.

Существует таблица, в которой хранятся данные по ценам отелей на различные периоды.

Код

idprice - Порядковый, auto increment
idhotel - Идентификатор, который берется из другой таблицы
date_price - Дата загрузки данной строки
from_date - Дата начала действия данного прайса (UNIX-формат)
to_date - Дата окончания действия данного прайса (UNIX-формат)
price - Стоимость проживания в сутки


Иногда, на эти отели приходят, так называемые, спецпредложения в формате XLS, которые необходимо загружать в эту таблицу.
Может будет проще, если приведу пример. Итак, возьмем отель с ID=5, для него имеются 5 записей в таблице:
Код

01.06.2010; 25.06.2010; 0; 50
26.06.2010; 06.07.2010; 12.06.2010;  40
07.07.2010; 28.07.2010; 28.06.2010;  46
29.07.2010; 01.09.2010; 0;  54
02.09.2010; 08.09.2010; 0;  55

Т.е. в кратце, отель с ID=5 имеет 5 периодов заездов, с 01.06.2010 по 25.06.2010 цена проживания 50 в сутки, с 07.07.2010 по 28.07.2010 46 в сутки и т.д., причём период с 07.07.2010 по 28.07.2010 является, так называемым "спецпредложением", так как значение 3 столбца не равняется нулю.

Теперь возвращаемся к задаче. Я уже говорил, что иногда приходят файлы новых спецпредложений, которые требуется загружать в эту таблицу. Привожу пример:

Код

26.06.2010; 06.07.2010; 15.06.2010;  35
10.07.2010; 15.07.2010; 25.06.2010;  46
04.09.2010; 06.09.2010; 25.06.2010; 51

Т.е. у нас есть три строки, которые нужно загрузить или не загрузить в нашу таблицу. Новая таблица цен для отеля с ID=5 после загрузки данного файла должна выглядеть следующим образом.

Код

01.06.2010; 25.06.2010; 0; 50
26.06.2010; 06.07.2010; 15.06.2010;  35
07.07.2010; 28.07.2010; 28.06.2010;  46
29.07.2010; 01.09.2010; 0;  54
02.09.2010; 03.09.2010; 0;  55
04.09.2010; 06.09.2010; 25.06.2010; 51
07.09.2010; 08.09.2010; 0;  55


Принцип изменения цен:
1. Строка может изменяться на новую только в том случае, если новая дата спецпредложения больше имеющейся даты спецпредложения.
Например, если в базе хранится период с 07.07.2010 по 28.07.2010, а дата его спецпредложения 28.06.2010, мы не можем изменять этот период, если приходит новое спецпредложение
на период с 10.07.2010 по 15.07.2010 с датой спецпредложения 25.06.2010
2. В базе не должно быть пересекающихся дат, т.е. периоды с 01.06.2010 - 10.06.2010 и 08.06.2010 - 15.06.2010 - это очень большой косяк. Такого быть не должно.
Если в базе хранится период с  02.09.2010 по 08.09.2010 и приходит SPO с датами с 04.09.2010 по 06.09.2010, то в общем случае получается три новых периоды, это: 
02.09.2010  - 03.09.2010, 04.09.2010 - 06.09.2010, 07.09.2010 - 08.09.2010


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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