Приглашение на ввод данных о заказе
Рисунок 16.4. Приглашение на ввод данных о заказе
После ввода пользователем информации о заказе, приложение посылает введенные данные в Peri-сценарий, который в реальных условиях взаимодействовал быс базой данных по заказам в ресторане. Чтобы сформировать приглашение пользователю на ввод данных о заказе, приложение запускает сценарийRestReservationWML.pl, состоящий из следующего программного кода:
#!/usr/bin/perl
$RestName = $ENV{'QUERY_STRING'};
$RestName =~ s/%20/ /g;
{ $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=\"EditRes\">
<do type=\"accept\" label=\"Edit\"> <noop /> </do>
<do type=\"options\" label=\"Make\"> <go href=\"#MakeRes\" /> </do>
<p align=\"center\">
$RestName<br/>
</p>
<p align=\"left\" mode=\"nowrap\">
<select>
<option onpick=\"#GetDay\">Day: \$(ResDay)</option> <option onpick=\"#GetTime\">Time: \$(ResTime)</option> <option onpick=\"#GetNumber\">Number: \$(ResNumber)</option> <option onpick=\"#GetName\">Name: \$(ResName)</option>
</select>
</p>
</card>
<card id=\"GetDay\">
<do type=\"accept\"> <go href=\"#EditRes\" /> </do>
<p align=\"left\" mode=\"nowrap\">
<select name=\"ResDay\">
<option value=\"Sunday\">Sunday</option> <option value=\"Monday\">Monday</option> <option value=\"Tuesday\">Tuesday</option> <option value=\"Wednesday\">Wednesday</option> <option value=\"Thursday\">Thursday</option> <option value=\"Friday\">Friday</option> <option value=\"Saturday\">Saturday</option>
</select>
</p>
</card>
<card id=\"GetTime\">
<do type=\"accept\"> <go href=\"#EditRes\" /> </do>
<p align=\"left\">
Time: <input name=\"ResTime\" maxlength=\"5\" format=\"NN:NN\" />
</p>
</card>
<card id=\"GetNumber\">
<do type=\"accept\"> <go href=\"#EditRes\" /> </do>
<p align=\"left\">
Number in party: <input name=\"ResNumber\" maxlength=\"2\" format=\"*N\" />
</p>
</card>
<card id=\"GetName\">
<do type=\"accept\"> <go href=\"#EditRes\" /> </do>
<p align=\"left\">
Name: <input name=\"ResName\" maxlength=\"15\" format=\"M14M\" />
</p>
</card>
<card id=\"MakeRes\">
<do type=\"accept\" label=\"Done\"> <go href=\"../RestaurantRes/ RestaurantRes.wml\" /> </do>
<p align=\"left\" mode=\"nowrap\">
Reservation at<br/> $RestName<br/> Confirmed
</p>
</card>
</wml>"; }
print $Deck;
Сценарий попросту создает WML-страницу, которая принимает данные о заказе, вводимые пользователем. Для получения данных о заказе приложение использует Peri-сценарий (вместо того, чтобы просто вызвать существующий WML-код),так как в реальном приложении сценарий использовался бы для связи с базойданных и затем мгновенно создавал бы WML-карты. Как вы, вероятно, догадались,содержимое Peri-сценария RestReservationHDML.pl почти полностью совпадает сWML-сценарием, за исключением того, что данный сценарий создает HDML-страницу.