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

         

Рассмотрение Peri-сценария RealEstateHDML.pl



Рассмотрение Peri-сценария RealEstateHDML.pl

Как и в случае приложения на WML, сценарий RealEstateHDML.pl не взаимодействует с базой данных, содержащей информацию о недвижимости. Вместо этогоиспользуются данные пяти домов, для которых известны цены и информация опродаже. Peri-сценарий RealEstateHDML.pl реализуется с помощью следующегопрограммного кода: #!/usr/bin/perl read (STDIN, $Buffer, $ENV{'CONTENT_LENGTH'}); @data = split(/&/, $Buffer); $PriceLow = $data[0]; $PriceHigh = $data[1]; $Price1 = 99500; $Price2 = 149995; $Price3 = 249995; $Price4 = 500000; $Price5 = 1500000; if (($PriceLow <= 0) || ($PriceHigh <= 0) || ($PriceLow > $PriceHigh)) { $Deck = "Content-type: text/x-hdml <HDML Version=3.0 Markable=True TTL=0> <Display Name=Error> <Action Type=Accept Label=Back Task=GO Dest=../RealEstate/RealEstate.hdml> <Wrap>Error in price range. Please enter a minimum price and a maximum price. </Display> </HDML>"; }



else { $Option = ""; if (($Price1 >= $PriceLow) && ($Price1 <= $PriceHigh)) { $Option = $Option . "<CE Task=GO Dest=../RealEstate/GV01234.hdml>GV01234 &dol;99,500"; } if (($Price2 >= $PriceLow) && ($Price2 <= $PriceHigh)) { $Option = $Option . "<CE Task=GO Dest=../RealEstate/LV01234.hdml>LV01234 &dol;149,995"; } if (($Price3 >= $PriceLow) && ($Price3 <= $PriceHigh)) { $Option = $Option . "<CE Task=GO Dest=../RealEstate/LV77711.hdml>LV77711 &dol;249,995"; } if (($Price4 >= $PriceLow) && ($Price4 <= $PriceHigh)) { $Option = $Option . "<CE Task=GO Dest=../RealEstate/BC01234.hdml>BC01234 &dol;500,000"; } if (($Price5 >= $PriceLow) && ($Price5 <= $PriceHigh)) { $Option = $Option . "<CE Task=GO Dest=../RealEstate/LV11711.hdml>LV11711 &dol;1,500,000"; } if ($Option eq "") { $Deck = "Content-type: text/x-hdml <HDML Version=3.0 Markable=True TTL=0> <Display Name=Error> <Action Type=Accept Label=Back Task=GO Dest=../RealEstate/RealEstate.hdml> <Wrap>No houses match the price range. </Display> </HDML>"; } else { $Deck = "Content-type: text/x-hdml <HDML Version=3.0 Markable=True TTL=0> <Choice Name=Pick> <Action Type=Accept Label=View> <Action Type=Soft1 Label=Back Task=GO Dest=../RealEstate/RealEstate.wml> <Line>Pick a house<br> ...MLS#....Price.. " . $Option . " </Choice> </HDML>"; } } print $Deck;
Как можно видеть, сценарий использует пять переменных, от $Pricel до$Price5, чтобы отслеживать цены домов, которые известны сценарию. Как и впредыдущем сценарии, для определения факта попадания цены дома в указанныйдиапазон, в программном коде используется серия операторов if. После того какпросмотрены цены всех пяти домов, приложение формирует HDML-страницу, которая с помощью элемента <Choice> создает меню из опций, отвечающих условиям поиска (опции сценарий сохраняет в переменной $0ption). Когда пользователь позднее выбирает из списка некоторый конкретный дом, HDML-приложение загружает HDML-страницу, соответствующую выбранному дому. Например, файл 77711 .hdml содержит следующий программный код: <HDML Version=3.0 Markable=True TTL=0> <Display Name=House> <Action Type=Accept Label=Back Task=PREV> <Line>MLS #:LV77711<br> &dol;249,995<br> Las Vegas<br> 4 BR / 2 Ba<br> 4100 SF<br> <A Task=GOSUB Dest=#MoreInfo>More Info</A> </Display> <Display Name=MoreInfo> <Action Type=Accept Label=Back Task=RETURN> <Line>Lot Size: 400X400<br> Year Built: 1998<br> Fireplace: Yes<br> Patio: Yes<br> Pool: Yes<br> Spa: Yes </Display> </HDML>
Когда HDML-страница запускает первую карту, браузер выполняет программныйкод, располагающийся внутри элемента House. Если пользователь выбирает опцию More Information (Дополнительная информация), выполняется ветвлениепрограммного кода и переход (с использованием задания GOSUB) на элементMorelnfо.



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