Vstup uživatele
Ukažme si jednoduchý příklad zadání dat uživatelem:
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="main" title="vstup"> <do type="accept" label="dalsi"> <go href="#ok"/> </do> <p> Zadejte své jméno: <input type="text" name="name"/> </p> </card> <card id="ok" title="Ahoj brachu"> <do type="prev" label="zpet"> <prev/> </do> <p> Zadane jmeno je$(name). </br> Klikni na tlacitko zpet. </p> </card> </wml> |
Příklad v emulátoru zde
Když označíte vstup, objeví se vstupní pole a můžete vložit své jméno. Po dokončení se automaticky objeví v textovém poli. Potom můžete kliknout na Options, kde můžete vybrat Next pro zobrazení následující stránky. Jak můžete vidět je zde ještě jiná volba "Edit Selection". Když na ni kliknete, vrátíte se zpátky k druhé obrazovce, kde můžete editovat text. Po kliknutí na Next, se objeví stránka s vaším jménem a s tlačítkem zpet k navrácení na předchozí stránku.
<input/> Tag zobrazí vstupní pole
kam může uživatel vkládat text. Atribut type určuje typ vstupu. V tomto příkladě
je použit textbox. Další možné typy vstupů jsou následující:
Typ password, který zobrazuje hvězdičky, když uživatel vkládá znaky. Nedoporučuje
se používat tento typ, protože je obtížné vkládat text na mobilním telefonu
bez prohlížení.
Atribut name určuje jméno proměnné, do které se uloží text zadaný uživatelem. Nemusíte dekladrovat proměnnou před jejím použitím, je deklarována automaticky.
<prev/> Toto je další úloha, kterou můžete specifikovat,
zajistí návrat na předchozí stránku.
$(...) Používá se k odkazu na proměnnou. Není podstatné, zda
je proměnná deklarována v jiné kartě, pokud je ve stejné desce.
Přenos dat na server
Existují dvě základní metody posílání dat z formulářů, jedná
se o GET a POST. Ty najdou své uplatnění také
při tvorbě WAP stránek pomocí WML. Programátor zde však může narazit na řadu
omezení a dalších skutečností, kterých si dosud nebyl vědom. Zjednodušeně řečeno,
při použití metody GET jsou data předávána prostřednictvím URL, zatímco při
využití POST nikoliv. Reálné mobilní telefony s WAPem mají totiž relativně výrazně
omezenu maximální délku URL adresy. Toto omezení pak následně ovlivňuje maximální
délku (součet délek) proměnných předávaných v URL adrese prostřednictvím metody
GET (Nokia 7110 - 512 bytů). Zatímco u metody POST se metody nepředávají přímo
URL adrese, je zde omezení pouze maximální velikostí decku ve zkompilované podobě
(Nokia 7110 13000 bytů).
Jednoduchý příklad na vytváření formulářů.
<wml> <card id="vstup" title="Vstup textu"> <p>Zadej text:<br/> <input type="text" name="vstup"/> <anchor>Odeslat <go href="http://127.0.0.1/getipost.php3" method="post"> <postfield name="text" value="$(vstup)"/> </go> </anchor> </p> </card> </wml> |
<do><do/> Atribut method určuje jakým způsobem se přenesou data zpět na server. V současné době jsou podporované dvě metody (post a get).
<postfield/> Tag se používá tam, kde chcete nastavit
jméno a hodnotu proměnné. Atribut name určuje jméno proměnné. Jméno používá
server k odkazování na proměnnou. Atribut value udává hodnotu proměnné. Může
to být textový řetězec, nebo jako v příkladu, proměnná deklarovaná v kartě.
V příkladu je proměnná first uzavřena v $(...), což znamená náhradu proměnné
její hodnotou, která byla předána serveru jako řetězec.
V řadě aplikací jistě bude více využita metoda POST před GET, protože má menší omezení a nepředává uživatelské jméno a heslo přes URL. Samozřejmě záleží na programátorovi, pro kterou metodu se rozhodne. Podrobněji si metodu get a post ukažeme v kapitole WAP a PHP.