[WML][PHP] Jak przesłać dane z pól tekstowych do innych stron?
Chcesz wypełnić pola tekstowe i przesłać je do innej strony, aby tam z nich skorzystać.
W języku WML możesz korzystać ze skryptów WMLS, ale przecież znacznie łatwiej jest odebrać dane z formularza PHP, gdzie można poddać je dowolnej obróbce.
Stwórzmy prosty formularz w WML, gdzie użytkownik będzie mógł wpisać swoje imię i wiek, a na podstawie tych danych na następnej stronie WAP powitamy go po imieniu i napiszmy, w którym roku się urodził. Zrobimy to aż na trzy sposoby...
Oto kod strony index.wml w pierwszej wersji:
<?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="k1" title="formularz">
<do type="accept" label="Wyslij">
<go href="odbierz.php" method="get">
<postfield name="imie" value="$(imie)"/>
<postfield name="wiek" value="$(wiek)"/>
</go>
</do>
<p>
Napisz o sobie:<br/>
imie: <input type="text" name="imie"/><br/>
wiek: <input type="text" name="wiek" format="*N"/>
</p>
</card>
</wml>
Tworzymy tutaj dwa pola tekstowe. W jednym można wpisać imię (dowolne znaki), a w drugim tylko liczby - dlatego ma dodatkowe pole formatowania (*N oznacza dowolną ilość cyfr). Po wypełniniu danych zostaną one przesłane do skryptu odbierz.php metodą GET po dojechaniu do końca strony i naciśnięciu guzika nawigacyjnego.
Inny sposób wysyłania danych to jawne dodanie zmiennych do adresu:
<?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="k1" title="formularz">
<do type="accept" label="Wyslij">
<go href="odbierz.php?imie=$(imie)&wiek=$(wiek)"/>
</do>
<p>
Napisz o sobie:<br/>
imie: <input type="text" name="imie"/><br/>
wiek: <input type="text" name="wiek" format="*N"/>
</p>
</card>
</wml>
A oto trzeci sposób, gdzie dane zostaną wysłane po naciśnięciu odnośnika, który spełnia rolę guzika submit w formularzach HTML:
<?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="k1" title="formularz"><p>
Napisz o sobie:<br/>
imie: <input type="text" name="imie"/><br/>
wiek: <input type="text" name="wiek" format="*N"/><br/>
<anchor>Wyslij
<go href="odbierz.php" method="get">
<postfield name="imie" value="$(imie)"/>
<postfield name="wiek" value="$(wiek)"/>
</go>
</anchor>
</p></card>
</wml>
Dane (niezależnie od opisanych sposobów) przekazane zostaną do skryptu odbierz.php metodą GET:
<?
header("Content-type: text/vnd.wap.wml");
echo '<?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="k1" title="info"><p>
<?
$imie = ($_GET["imie"]<>"")?$_GET["imie"]:"anonim";
$wiek = ($_GET["wiek"]<>"")?$_GET["wiek"]:0;
echo "Witaj $imie<br/>";
echo "Rok urodzenia: ".(date("Y")-$wiek);
?>
</p></card>
</wml>
A tutaj po staremu - odczytujemy pola, jeżeli są puste nadajemy własne wartości, czyli "anonim" dla imienia i zero dla wieku. Następnie wypisujemy imię i obliczamy rok urodzenia odejmując od aktualnego roku podaną liczbę lat.