Formuláře na stránce

Formulář dodává stránce jistou „interaktivitu“. Polopaticky se to nechá vyložit tak, že formulář oživuje stránku a uživateli se zdá, že ten, kdo tu velí je on a né počítač... ;-) Předem musím říci, že použití formuláře na stránce se na 90% rovná použití nějakého skriptu (buď JavaScriptu nebo CGI skriptu), takže pokud o tom nic nevíte, bylo by dobré něco si o tom přečíst.

Z praktického hlediska je formulář prostředek k user-friendly zadávání parametrů CGI skriptu. Každý prvek formuláře, který použijete znamená jeden parametr do CGI skriptu. Nezáleží na tom, jakou metodou dáte uživateli vybrat, ale jaký bude výstup k CGI skriptu. Leckdy „shoříte“ na tom, že jste si špatně uvědomili předávanou hodnotu (tj. hodnotu, která se pošle skriptu), proto si vždy překontrolujte, co z každé volby plyne.

Základním příkazem, který (podobně jako příkaz <TABLE> u tabulky) ohraničuje formulář je:

<FORM>
Jednak ohraničuje formulář a jednak říká, jakou fuknci bude formulář mít. Má následující parametry:

ACTION="adresa_skriptu"Adresa skriptu, kterému se předá požadavek. Nemusí se jednat o skript (může být např.: mailto...), ale většinou tomu tak je.
METHOD="metoda"Určuje metodu předávání, tzn. kde budou parametry. Může nabývat následujících hodnot:

GETParametry budou uvedeny za adresu (viz. příklad.
POSTParametry budou uvedeny v těle dotazu (do skriptu se pošlou data)

ENCTYPE="způsob_kódování"Určuje metodu překódování (tzn. že všechna data projdou tímto filtrem,aby se zbavila nepřípustných znaků), kterou se data pošlou. Implicitní je application/x-www-form-urlencoded. Tato metoda zbaví řetězce znaků, tím, že je přeloží do svého kódu (např. mezeru přeloží jako %20 atd.) Pokud data nechcete kódovat, použijte metodu multipart/form-data nebo text/plain, toto kódování nemůže být použito s metodou GET (zničilo by URL...).
TARGET="jméno_rámu"Určuje jméno rámu, kam se zobrazí výsledek.

Příklad:

<FORM ACTION="http://www.skola.cz/cgi-bin/skript1" METHOD=GET> Skriptu se pošle dotaz uvedený jako parametr za adresu (např.: http://www.skola.cz/cgi-bin/skript1?jméno=Ondra+Bezucha)

Následující příkazy lze použít jen v bloku <FORM> (tj. mezi příkazy <FORM> a </FORM>)!
<INPUT>
Příkaz slouží k definici vstupního pole. Příkaz je nepárový a má následující parametry:

TYPE=typ_pole"Určuje typ pole. viz. tabulka.
NAME=jméno_poleUrčuje jméno pole. Tento parametr se odesílá skriptu ve tvaru jméno_pole=hodnota.
VALUE=hodnota_poleUrčuje, jakou hodnotu má pole. Jestliže jde o pole textové, určuje parametr implicitní hodnotu pole.
CHECKEDUrčuje, zda je pole implicitně aktivováno (když se jedná o pole typu checkbox nebo radio).
SIZEUrčuje šířku pole ve znacích.
MAXLENGTH=počet_znakůMaximální délka řetězce v poli (ve znacích).
ALIGN="zarovnání"Zarovnání, no comment... :-)

<TEXTAREA>
Příkaz slouží k definici velkého pole textu (např. pro dopis, vzkaz, apod.). Je párový. Pokud chcete použít nějakou implicitní hodnotu uzavřete ji tímto příkazem v páru. Příkaz má následující parametry:

NAME="jméno_pole"Jméno pole. Tento parametr se odesílá skriptu ve tvaru jméno_pole=hodnota.
COLS=počet_řádkůUrčuje výšku pole v řádcích.
ROWS=šířka_ve_znacíchUrčuje šířku pole ve znacích. (počet sloupců)

<SELECT>
Příkaz vytváří nabídku z několika možností. Každá možnost se definuje pomocí příkazu <OPTION>. Příkaz má následující parametry:

NAMEJméno pole
SIZE="počet_řádků"Určuje, kolik možností (řádků) je vidět najednou
MULTIPLETímto parametrem umožníte uživateli, aby vybral více než jednu volbu

<OPTION>
Definuje jednotlivé možnosti v poli typu <SELECT>. Za tento příkaz se uvede popis, který se zobrazí uživateli ve tvaru: <OPTION >Popis pro uživatele (ukončující příkaz se nemusí psát). Parametry:

VALUE=hodnotaUrčuje hodnotu, která se předá skriptu.
SELECTEDPokud je uvedeno, hodnota bude implicitně vybraná (podobné jako parametry CHECKEDpříkazu <INPUT>.

Tabulka typů polí

VzhledTypPopis
BUTTONTlačítko
Volba 1

Volba 2

CHECKBOXZaškrtávací volba
Knoflík 1

Knoflík 2

RADIORádiový knoflík
FILEPřipojení souboru k dotazu
TEXTTextové pole
PASSWORDHeslo - text, který se nezobrazuje. Místo něj se píší na obrazovku hvězdičky :-)
HIDDENPole, které se na obrazovce nezobrazí. (pro informativní účely skriptu, atd.)
SUBMITOdeslání formuláře skriptu
RESETObnovení Implicitních údajů (zrušení formuláře)


Příklad

<HTML>
<HEAD>
<TITLE>Dotazník</TITLE>
</HEAD>
<BODY>
<P ALIGN=CENTER>
<H2> Dotazník </H2>
<P ALIGN=LEFT>
Prosím vyplňte tento dotazník:
<P>
<FORM ACTION="/cgi-bin/dotaznik" METHOD=POST>
Vaše jméno: <INPUT NAME=JMENO TYPE=TEXT SIZE=50><P>
Věk: <INPUT NAME=VEK TYPE=TEXT SIZE=3><P>
E-Mail: <INPUT NAME=EMAIL TYPE=TEXT SIZE=30><P>
<HR WIDTH=75%>
Používáte operační systém: <BR>
<INPUT NAME=OS TYPE=RADIO VALUE=MAC> MacOS <BR>
<INPUT NAME=OS TYPE=RADIO VALUE=UNIX> UNIX <BR>
<INPUT NAME=OS TYPE=RADIO CHECKED VALUE=WIN> Windows <BR>
<INPUT NAME=OS TYPE=RADIO VALUE=DOS> DOS <BR>
<INPUT NAME=OS TYPE=RADIO VALUE=JINY> Jiný <P>
Váš WWW browser je: <BR>
<INPUT NAME=BROWSER TYPE=RADIO CHECKED VALUE=NETSCAPE> Netscape Navigator <BR>
<INPUT NAME=BROWSER TYPE=RADIO VALUE=EXPLORER> Internet Explorer <BR>
<INPUT NAME=BROWSER TYPE=RADIO VALUE=MOSAIC> Mosaic <BR>
<INPUT NAME=BROWSER TYPE=RADIO VALUE=LYNX> Lynx <BR>
<INPUT NAME=BROWSER TYPE=RADIO VALUE=JINY> Jiný <P>
Chcete nám ještě něco vzkázat?<BR>
<TEXTAREA NAME=VZKAZ COLS=60 ROWS=5></TEXTAREA>
<P><HR WIDTH=75%><P ALIGN=CENTER>
<INPUT VALUE=Odeslat TYPE=SUBMIT>
<INPUT VALUE=Zahodit TYPE=RESET>
</FORM>
</BODY>
</HTML>