Пособие по написанию 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 &lt= 0) ($PriceHigh &lt= 0) ($PriceLow &gt $PriceHigh))

{ $Deck = "Content-type: text/x-hdml

&ltHDML Version=3.0 Markable=True TTL=0&gt

&ltDisplay Name=Error&gt

&ltAction Type=Accept Label=Back Task=GO Dest=../RealEstate/RealEstate.hdml&gt

&ltWrap&gtError in price range. Please enter a minimum price and a maximum price.



&lt/Display&gt

&lt/HDML&gt";

}

else

{

$Option = "";

if (($Price1 &gt= $PriceLow) && ($Price1 &lt= $PriceHigh)) { $Option = $Option . "&ltCE Task=GO Dest=../RealEstate/GV01234.hdml&gtGV01234 &dol;99,500"; }

if (($Price2 &gt= $PriceLow) && ($Price2 &lt= $PriceHigh)) { $Option = $Option . "&ltCE Task=GO Dest=../RealEstate/LV01234.hdml&gtLV01234 &dol;149,995"; }

if (($Price3 &gt= $PriceLow) && ($Price3 &lt= $PriceHigh)) { $Option = $Option . "&ltCE Task=GO Dest=../RealEstate/LV77711.hdml&gtLV77711 &dol;249,995"; }

if (($Price4 &gt= $PriceLow) && ($Price4 &lt= $PriceHigh)) { $Option = $Option . "&ltCE Task=GO Dest=../RealEstate/BC01234.hdml&gtBC01234 &dol;500,000"; }

if (($Price5 &gt= $PriceLow) && ($Price5 &lt= $PriceHigh)) { $Option = $Option . "&ltCE Task=GO Dest=../RealEstate/LV11711.hdml&gtLV11711 &dol;1,500,000"; }




if ($Option eq "")

{ $Deck = "Content-type: text/x-hdml

&ltHDML Version=3.0 Markable=True TTL=0&gt

&ltDisplay Name=Error&gt

&ltAction Type=Accept Label=Back Task=GO Dest=../RealEstate/RealEstate.hdml&gt

&ltWrap& gtNo houses match the price range.

&lt/Display&gt

&lt/HDML&gt";

}

else

{ $Deck = "Content-type: text/x-hdml

&ltHDML Version=3.0 Markable=True TTL=0&gt

&ltChoice Name=Pick&gt

&ltAction Type=Accept Label=View&gt &ltAction Type=Soft1 Label=Back Task=GO Dest=../RealEstate/RealEstate.wml&gt

&ltLine&gtPick a house&ltbr&gt ...MLS#....Price..

" . $Option . "

&lt/Choice&gt

&lt/HDML&gt"; }

}

print $Deck;

Как можно видеть, сценарий использует пять переменных, от $Pricel до$Price5, чтобы отслеживать цены домов, которые известны сценарию. Как и впредыдущем сценарии, для определения факта попадания цены дома в указанныйдиапазон, в программном коде используется серия операторов if. После того какпросмотрены цены всех пяти домов, приложение формирует HDML-страницу, которая с помощью элемента <Choice> создает меню из опций, отвечающих условиям поиска (опции сценарий сохраняет в переменной $0ption). Когда пользователь позднее выбирает из списка некоторый конкретный дом, HDML-приложение загружает HDML-страницу, соответствующую выбранному дому. Например, файл 77711 .hdml содержит следующий программный код:

&ltHDML Version=3.0 Markable=True TTL=0&gt

&ltDisplay Name=House&gt

&ltAction Type=Accept Label=Back Task=PREV&gt

&ltLine&gtMLS #:LV77711&ltbr&gt &dol;249,995&ltbr&gt Las Vegas&ltbr&gt 4 BR / 2 Ba&ltbr&gt 4100 SF&ltbr&gt &ltA Task=GOSUB Dest=#MoreInfo&gtMore Info&lt/A&gt

&lt/Display&gt

&ltDisplay Name=MoreInfo&gt

&ltAction Type=Accept Label=Back Task=RETURN&gt

&ltLine&gtLot Size: 400X400&ltbr&gt Year Built: 1998&ltbr&gt Fireplace: Yes&ltbr&gt Patio: Yes&ltbr&gt Pool: Yes&ltbr&gt Spa: Yes

&lt/Display&gt

&lt/HDML&gt

Когда HDML-страница запускает первую карту, браузер выполняет программныйкод, располагающийся внутри элемента House. Если пользователь выбирает опцию More Information (Дополнительная информация), выполняется ветвлениепрограммного кода и переход (с использованием задания GOSUB) на элементMorelnfо.



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