Пособие по написанию WAP-сайтов

         

Рассмотрение Perl-сиенария HotelAvailWML.pl



Рассмотрение Perl-сиенария HotelAvailWML.pl

После того как пользователь выберет гостиницу, программный код приложенияHotellnfo запускает Peri-сценарий, создающий WML-страницу, которая выводитприглашение пользователю на ввод регистрационных данных. Для приема данной информации приложение могло бы использовать или WML-страницу, илиPeri-сценарий; однако, чтобы облегчить проверку вводимой пользователем информации, предпочтение отдается Peri-сценарию. Peri-сценарий HotelAvailWML.plреализуется с помощью следующего программного кода:

#!/usr/bin/perl

$HotelCode = $ENV{'QUERY_STRING'};

$Deck = "Content-type: text/vnd.wap.wml

&lt?xml version=\"1.0\"?&gt &lt!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\"&gt

&ltwml&gt

&lthead&gt

&ltmeta http-equiv=\"Cache-Control\" content=\"max-age=0\" forua=\"true\"/&gt

&lt/head&gt

&ltcard id=\"Avail\"&gt

&ltdo type=\"accept\" label=\"Edit\"&gt &ltnoop /&gt &lt/do&gt

&ltdo type=\"options\" label=\"Check\"&gt &ltgo method=\"post\" href=\"CheckAvailWML.pl\"&gt &ltpostfield name=\"HotelCode\" value=\" \$(HotelCode)&\"/&gt &ltpostfield name=\"CheckInDate\" value=\" \$(CheckInDate:noesc)&\"/&gt &ltpostfield name=\"CheckOutDate\" value=\" \$(CheckOutDate:noesc)&\"/&gt &ltpostfield name=\"NumGuests\" value=\" \$(NumGuests)\"/&gt &lt/go&gt &lt/do&gt



&ltp align=\"center\"&gt

Web Inns&ltbr/&gt $HotelCode

&lt/p&gt

&ltp align=\"left\" mode=\"nowrap\"&gt

&ltselect&gt

&ltoption onpick=\"#GetCheckIn\"&gtCheck In (mm/dd/yy): \$(CheckInDate)&lt/option&gt &ltoption onpick=\"#GetCheckOut\"&gtCheck Out (mm/dd/yy): \$(CheckOutDate)&lt/option&gt &ltoption onpick=\"#GetNumber\"&gtNumber of guests: \$(NumGuests)&lt/option&gt



&lt/select&gt

&lt/p&gt

&lt/card&gt

&ltcard id=\"GetCheckIn\"&gt

&ltdo type=\"accept\"&gt &ltgo href=\"#Avail\" /&gt &lt/do&gt

&ltp align=\"left\" mode=\"nowrap\"&gt

Check in: &ltinput name=\"CheckInDate\" maxlength=\"8\" format=\"NN/NN/NN\" /&gt

&lt/p&gt

&lt/card&gt

&ltcard id=\"GetCheckOut\"&gt

&ltdo type=\"accept\"&gt &ltgo href=\"#Avail\" /&gt &lt/do&gt

&ltp align=\"left\" mode=\"nowrap\"&gt

Check out: &ltinput name=\"CheckOutDate\" maxlength=\"8\" format=\"NN/NN/NN\" /&gt

&lt/p&gt

&lt/card&gt

&ltcard id=\"GetNumber\"&gt

&ltdo type=\"accept\"&gt &ltgo href=\"#Avail\" /&gt &lt/do&gt

&ltp align=\"left\" mode=\"nowrap\"&gt

Number of guests: &ltinput name=\"NumGuests\" maxlength=\"2\" format=\"N*N\" /&gt

&lt/p&gt

&lt/card&gt

&lt/wml&gt";

print $Deck;

Сценарий создает карту, содержащую элемент <select>, который обеспечиваетвозможность выбора для редактирования числа постояльцев, даты заселения илидаты выселения. В зависимости от сделанного пользователем выбора выполняется ветвление программного кода и переход на локальную карту, содержащую элемент <input>, который выводит приглашение пользователю на ввод данных. Поле format, присутствующее внутри каждого элемента <input>, определяет формат данных, воспринимаемых приложением. После ввода пользователем требуемых данных приложение вызывает Peri-сценарий CheckAvailWML.pl, отображающий на экране обобщенную информацию по свободным номерам.

В реальном приложении сценарий CheckAvailWML.pl взаимодействовал бы с базой данных, чтобы определить наличие свободных номеров.Затем сценарийсортировал бы свободные номера по типу гостиницы и предоставлял бы пользователю возможность зарезервировать номер из выводимого списка. Для простоты сценарий, запускаемый приложением Hotellnfo, отображает один и тот же список гостиничных номеров, независимо от выбранной гостиницы или введенныхрегистрационных данных.

Содержание раздела