ObBot Wgent LiveTree Архив
Архив новостей  Архив публикаций  Разное 

Скрипт бронирования мест для турагентств


Страница:  1 2 3

Быстро, дёшево и качественно
Правильный генератор паролей
Language hack для любой CMS
Сложный парсер даты и времени начала и окончания мероприятия, написанных человеком
Простое решение парадокса Ферми
Thank God For The Bomb
Неверные загадки
Распахивание больших картинок на jQuery
Защита пароля от подбора брутфорсом

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

Live Demo бронирования мест предусматривает 3 различных уровня доступа:

  • обычного посетителя  - без пароля; видно, какие места забронированы, но не видно, на чьё имя.
  • менеджера - логины менеджер1 и менеджер2, пароли совпадают с логинами; видны данные о забронированых местах, доступно бронирование, разбронирование, редактирование введённых данных, перенос автобуса в личную папку (для предотвращения коллизий при бронировании большого количесва мест) и обратно в общую.
  • топменеджера - логин и пароль топменеджер; доступны все функции менеджеров плюс создание новых шаблонов автобусов и гостиниц.

Скрипт изначально писался под CMS LiveTree, поэтому для запуска в качестве отдельного ПО его придётся несколько переработать.

Возможна установка скрипта "Бронирование мест" на Ваш сайт вместе с CMS LiveTree в качестве раздела Вашего сайта с полным копированием Вашего дизайна. Пример такой работы (по заказу турагентства "Регион-Тур") можно посмотреть здесь, стоимость работ составит 6 тысяч рублей, заказать установку?

 

Ниже исходный код скрипта публикуется as is.

 

<?php /* Файл /script/mesto.php*/
chdir("..");
require_once("functions.php");
require_once("core.php");
chdir("script");
$ret=param("ret");
if($ret){ //if скрипт был вызван отдельно $locked=false; $parent=param("parent"); $parentIn=getName(getParent($parent)); $parentInType=getObjType(getParent($parent));

if($parentInType=="Менеджер") $locked=$parentIn;

if(!$locked) $locked=locked($parent);
 if($locked) {
?><META http-equiv=Content-Type content="text/html; charset=windows-1251">
Забронировать места невозможно потому, что автобус <? echo getName($parent); ?> сейчас редактируется пользователем "<?=$locked?>"<br />
Чтобы не потерять набранные данные, дождитесь, когда "<?=$locked?>" закончит редактирование,<br />
затем нажмите клавишу "F5" на клавиатуре и ответьте утвердительно на запрос системы о повторной отправке данных.
<?
  exit;
 } // if locked
 $thisName=param("thisName");
 $alsoName=param("alsoName");
 if( !isFree($parent, $thisName) || !isFree($parent, $alsoName) ) { ?><META http-equiv=Content-Type content="text/html; charset=windows-1251"> Увы! Как минимум одно из запрошенных Вами мест уже забронировано.<br /> <a href="<? echo getHref($parent) ?>">Вернуться к бронированию мест в автобусе "<? echo getName($parent); ?>"?</a> <? exit; } // if автобус заблокирован
// иначе:
 occupy($parent, $thisName);
 if($alsoName!="") occupy($parent, $alsoName);
 ob_end_clean(); header("Location: ".$ret); exit;
} //if скрипт был вызван отдельно и надо вернуться в точку вызова

// $ID определяется в processTemplate
$parent=param("id");
$mesto=param("mesto");
if($mesto=="") {echo "Ошибка в вызове скрипта mesto.php: не указан параметр "mesto" (т.е., собственно номер места)."; exit;}
if( isFree($parent, $mesto) ) { if( !isOwner($parent) || locked($parent) ) { ?> <font color="#00a0b0">Место № <b><? echo $mesto; ?></b> свободно.</font> <? }
 else { ?> <form action="script/mesto.php" method="POST"> <input type="hidden" value="<?=$parent?>" name="parent" /> <input type="hidden" value="/bus/id<?=$parent?>.htm" name="ret" /> <input type="hidden" value="<?=$mesto?>" name="thisName" /> Бронировать&nbsp;место <font color="#00a0b0"><b><? echo $mesto; ?></b></font><br /> <textarea name="desc" class="subminput" style="width:94%;height:40px;"></textarea><br /> а&nbsp;также&nbsp;<input type="text" name="alsoName" class="subminput" style="WIDTH: 20px; COLOR: #00a0b0;">&nbsp;<input class="subminput" style="WIDTH: 30px; COLOR: #ffffff; BACKGROUND-COLOR: #00a0b0; border:0;" type="submit" value="Ok" /> </form> <? } // else владелец может забронировать
} //if свободно
else { $thisID=db1("ID", CATEGORIES, "parent=".$parent." AND name='".$mesto."'"); $desc=db1("description", CATEGORIES, "parent=".$parent." AND name='".$mesto."'"); if(!isOwner($thisID)) { ?><font color="#FF3333">Забронировано</font><? }
 else { ?> <b><a href="edit.php?id=<?=$thisID?>&ref=<? echo getHref($parent); ?>" title="Редактировать информацию"><b><?=$mesto?></b></a></b> <i>(<? echo db1("owner", CATEGORIES, "parent=".$parent." AND name='".$mesto."'"); ?>)</i> [<a href="del.php?id=<?=$thisID?>" title="РАЗБРОНИРОВАТЬ МЕСТО" style="text-decoration:none;"><font color="#FF0000">X</font></a>]<br /> <? echo $desc; } // else владелец видит информацию
} //else занято
?>


 
 
  W-gent and ObBot / Архив / Архив публикаций / Создание сайта©www.ObBot.com

Наш хостинг-провайдер