Пособие по написанию 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 <?xml version=\"1.0\"?> <!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\"> <wml> <head> <meta http-equiv=\"Cache-Control\" content=\"max-age=0\" forua=\"true\"/> </head> <card id=\"Avail\"> <do type=\"accept\" label=\"Edit\"> <noop /> </do> <do type=\"options\" label=\"Check\"> <go method=\"post\" href=\"CheckAvailWML.pl\"> <postfield name=\"HotelCode\" value=\" \$(HotelCode)&\"/> <postfield name=\"CheckInDate\" value=\" \$(CheckInDate:noesc)&\"/> <postfield name=\"CheckOutDate\" value=\" \$(CheckOutDate:noesc)&\"/> <postfield name=\"NumGuests\" value=\" \$(NumGuests)\"/> </go> </do> <p align=\"center\"> Web Inns<br/> $HotelCode </p> <p align=\"left\" mode=\"nowrap\"> <select> <option onpick=\"#GetCheckIn\">Check In (mm/dd/yy): \$(CheckInDate)</option> <option onpick=\"#GetCheckOut\">Check Out (mm/dd/yy): \$(CheckOutDate)</option> <option onpick=\"#GetNumber\">Number of guests: \$(NumGuests)</option> </select> </p> </card> <card id=\"GetCheckIn\"> <do type=\"accept\"> <go href=\"#Avail\" /> </do> <p align=\"left\" mode=\"nowrap\"> Check in: <input name=\"CheckInDate\" maxlength=\"8\" format=\"NN/NN/NN\" /> </p> </card> <card id=\"GetCheckOut\"> <do type=\"accept\"> <go href=\"#Avail\" /> </do> <p align=\"left\" mode=\"nowrap\"> Check out: <input name=\"CheckOutDate\" maxlength=\"8\" format=\"NN/NN/NN\" /> </p> </card> <card id=\"GetNumber\"> <do type=\"accept\"> <go href=\"#Avail\" /> </do> <p align=\"left\" mode=\"nowrap\"> Number of guests: <input name=\"NumGuests\" maxlength=\"2\" format=\"N*N\" /> </p> </card> </wml>"; print $Deck;
Сценарий создает карту, содержащую элемент <select>, который обеспечиваетвозможность выбора для редактирования числа постояльцев, даты заселения илидаты выселения. В зависимости от сделанного пользователем выбора выполняется ветвление программного кода и переход на локальную карту, содержащую элемент <input>, который выводит приглашение пользователю на ввод данных. Поле format, присутствующее внутри каждого элемента <input>, определяет формат данных, воспринимаемых приложением. После ввода пользователем требуемых данных приложение вызывает Peri-сценарий CheckAvailWML.pl, отображающий на экране обобщенную информацию по свободным номерам.
В реальном приложении сценарий CheckAvailWML.pl взаимодействовал бы с базой данных, чтобы определить наличие свободных номеров. Затем сценарийсортировал бы свободные номера по типу гостиницы и предоставлял бы пользователю возможность зарезервировать номер из выводимого списка. Для простоты сценарий, запускаемый приложением Hotellnfo, отображает один и тот же список гостиничных номеров, независимо от выбранной гостиницы или введенныхрегистрационных данных.









Содержание    Назад    Вперед