Pomocφ p°φkaz∙ pro tvorbu formulß°∙ lze do jazyka HTML zabudovat
polφΦka pro zadßvßnφ textu a tlaΦφtka. ┌daje vypln∞nΘ u₧ivatelem se
zasφlajφ serveru, kde se takΘ zpracovßvajφ (v drtivΘ v∞tÜin∞ p°φpad∙
jsou odeslanß data zpracovßna CGI skriptem, kter² je nutnΘ umφstit
do adresß°e CGI skript∙ - je nutnΘ kontaktovat administrßtora
serveru a po₧ßdat jej o umφst∞nφ vaÜeho CGI programu do tohoto adresß°e).
Ji₧ jazyk HTML 2.0 poskytuje p°φkazy pro tvorbu formulß°∙. ╚ßsti
dokument∙, kterΘ majφ slou₧it k zφskßvßnφ informacφ, lze vytvo°it
v podob∞ formulß°e, do n∞ho₧ autor m∙₧e umφstit jak vstupnφ pole, tak
i seznamy s mo₧nostmi, z nich₧ se polo₧ky vybφrajφ pomocφ tlaΦφtka
nebo zaÜkrtßvacφch tlaΦφtek. Jakmile u₧ivatel stiskne po vypln∞nφ
formulß°e tlaΦφtko "Submit", jsou ·daje zφskanΘ tφmto
formulß°em odeslßny na server.
V tomto mφst∞ vÜak nastßvajφ problΘmy. Bez programu, kter² by na
serveru dßle zpracoval data z formulß°e, nelze prakticky nic d∞lat.
NaÜt∞stφ existuje jedna v²jimka, kdy se zadanß data mφsto na server
mohou zaslat pomocφ funkce mailto na libovolnou e-mailovou
adresu. Bohu₧el doÜl² v²sledek na danou adresu nenφ
p°φliÜ p°ehledn², nebo¥ obsahuje spoustu specißlnφch znak∙. I p°esto
vÜak z∙stßvß funkce mailto tφm nejsch∙dn∞jÜφm °eÜenφm, jak
vyu₧φt HTML formulß°e a dostat se k vyhodnocenφ zφskan²ch v²sledk∙.
╚innost formulß°e
Definice formulß°e je uzav°ena mezi nßv∞Ütφ <FORM>
a </FORM>. Do kontejneru FORM jsou pomocφ mnohostrannΘho
p°φkazu <INPUT> vklßdßna vstupnφ pole. Atribut TYPE u
p°φkazu INPUT m∙₧e nab²vat dvou specißlnφch hodnot "submit" a
"reset". V obou p°φpadech je zobrazeno odpovφdajφcφ
tlaΦφtko. ┌kolem tlaΦφtka "Submit" je zaslat zφskanß data
z formulß°e na server k dalÜφmu zpracovßnφ. V nejjednoduÜÜφm p°φpad∞
si prohlφ₧eΦ znovu vy₧ßdß aktußlnφ HTML strßnku, ke kterΘ p°ipojφ
informaci zadanou u₧ivatelem. TlaΦφtko "Reset" vyma₧e z
formulß°e vÜechny ji₧ zadanΘ hodnoty.
nepßrovß znaΦka slou₧φcφ k definici jednoho jednoduchΘho vstupnφho pole
formulß°e; formulß° zpravidla obsahuje n∞kolik <INPUT> prvk∙
type
druh vstupnφho pole text jedno°ßdkovΘ vstupnφ pole; atributem value
lze zadat poΦßteΦnφ hodnotu pole password jako text, ale nenφ zobrazovßna
u₧ivatelem zapisovanß hodnota checkbox zaÜkrtßvacφ polφΦko, atributem value
lze specifikovat hodnotu vracenou p°i zaÜkrtnutφ tohoto polφΦka radio volba prßv∞ jednΘ mo₧nosti; atributem value
lze specifikovat hodnotu vracenou pro tuto volbu submit tlaΦφtko odesφlajφcφ data k serveru; atributem
value lze definovat popis tlaΦφtka reset tlaΦφto pro nastavenφ implicitnφch hodnot prvk∙
formulß°e; atributem value lze definovat popis tlaΦφtka hidden skrytΘ pole; atributem value lze
specifikovat pevnou hodnotu nezadßvanou u₧ivatelem image na poklep citlivß grafika specifikovanß atributem
src - pokyn k odeslßnφ dat serveru s p°ipojen²mi sou°adnicemi
mφsta odkliknutφ file pole pro zadßnφ jmΘna souboru; umo₧≥uje k v²stupu
formulß°e p°ipojit jeden nebo vφce lokßlnφch soubor∙; atributem
value lze specifikovat implicitnφ nßzev souboru; atributem
accept lze vymezit p°φpustnΘ typy soubor∙; tento typ pole
vy₧aduje v deklaraci formulß°e atributy
enctype="multipart/form-data" method=post range Φφseln² interval (p°etßΦecφ pole) scribble "poΦmßratelnß" grafika specifikovanß
atributem src jot "popsatelnß" grafika specifikovanß
atributem src
name
symbolickΘ jmΘno pole odesφlanΘ serveru (musφ b²t v rßmci formulß°e
jednoznaΦnΘ); pro typ pole checkbox|radio m∙₧e mφt °ada
INPUT prvk∙ vytvß°ejφcφch blok toto₧nΘ symbolickΘ jmΘno
value
hodnota pole (dle typu)
checked
specifikuje implicitnφ zaÜkrtnutφ pole typu checkbox nebo
urΦuje implicitnφ volbu pole typu radio
min
dolnφ mez ΦφselnΘho intervalu pro typ pole range
max
hornφ mez ΦφselnΘho intervalu pro typ pole range
src
URL grafiky pro typ pole image, scribble, jot
size
poΦet_znak∙ | poΦet_znak∙, poΦet_°ßdk∙; fyzick² rozm∞r pole
typu text|password
maxlength
maximßlnφ poΦet znak∙ akceptovan² v poli typu text|password
align
ovliv≥uje umφst∞nφ objektu v∙Φi okolφ top hornφ okraj objektu bude zarovnßn s hornφm okrajem
°ßdku middle st°ed objektu bude zarovnßn na ·Φa°φ °ßdku bottom dolnφ okraj objektu bude zarovnßn se spodnφm
okrajem °ßdku left vodorovnΘ umφst∞nφ objektu na lev² okraj right vodorovnΘ umφst∞nφ objetu na prav² okraj
accept
seznam MIME typ∙ nebo vzor∙ p°φpustn²ch pro pole typu file,
kter² je skript ochoten p°ijφmat; je na prohlφ₧ecφm programu, aby
podle p°φpony zkontroloval, zda u₧ivatel zadal p°φpustn² soubor
disabled
zobrazenφ pole bez mo₧nosti jeho modifikace
error
hlßÜenφ pro p°φpad chybnΘ hodnoty
Aby mohl b²t v²stup z formulß°e dßle zpracovßvßn, musφ b²t tato strßnka
spojena s n∞jak²m CGI skriptem, kter² komunikuje s dalÜφm programem
ulo₧en²m na stran∞ serveru. Program vyhodnotφ zaslanß data a v²sledek
odeÜle klientskΘmu browseru.
Data dopl≥enß do formulß°e jsou p°ipojovßna za nßzev dokumentu otaznφkem.
Po otaznφku nßsleduje oznaΦenφ (label) vstupnφho pole, kterΘ je shodnΘ
s hodnotou atributu NAME zadanΘho v nßv∞Ütφ <INPUT>. Mezery jsou
nahrazeny znamΘnky plus (+). Specißlnφ znaky jsou zapsßny v
hexadecimßlnφm k≤du, kterΘmu p°edchßzφ znak %.
Tvorba formulß°e
Nejv∞tÜφ Φßst prßce ve formulß°φch obstarßvß p°φkaz <INPUT>.
Typ vstupnφho pole je urΦen atributem TYPE, kter² m∙₧e nab²vat
nßsledujφcφch hodnot:
<INPUT TYPE="text">
Typ "text" slou₧φ k zadßvßnφ jedno°ßdkov²ch text∙. Tento
typ je definovßn jako implicitnφ, tak₧e je pou₧it i v p°φpad∞, ₧e
u p°φkazu INPUT nenφ typ definovßn. DΘlku tohoto vstupnφho pole je
mo₧nΘ omezit pomocφ atributu SIZE. Maximßlnφ dΘlku zobrazovanΘho
pole je mo₧nΘ omezit atributem MAXLENGTH. Pokud je MAXLENGTH
menÜφ ne₧ SIZE, pak se text v okΘnku posouvß (roluje).
<INPUT TYPE="password">
PolφΦka typu "password" jsou velice podobnß polφΦk∙m pro
zadßvßnφ textu ovÜem s v²jimkou, ₧e mφsto hodnoty zapisovanΘ do pole
typu "password" jsou vypisovßny hv∞zdiΦky. Je vÜak nutnΘ
upozornit na to, ₧e tento zp∙sob zadßvßnφ hesla nenφ nejbezpeΦn∞jÜφ
a nenφ velk²m problΘmem toto heslo odhalit.
<INPUT TYPE="checkbox">
PolφΦko typu "checkbox" je zobrazeno bu∩ v podob∞ malΘho
ΦtvereΦku, kter² lze zak°φ₧kovat, nebo tlaΦφtka, kterΘ lze vypnout nebo
zapnout. Na rozdφl od textov²ch polφ, jejich₧ obsah je posφlßn na server
i v p°φpad∞, ₧e jejich obsah je prßzdn², je nßzev checkboxu sd∞len
serveru pouze v p°φpad∞, kdy₧ je aktivnφ. Hodnota aktivnφho checkboxu
je stanovena na zßklad∞ atributu VALUE, kter² standardn∞ p°echßzφ
do stavu "on".
Atribut VALUE umo₧≥uje zabrßnit kolizφm v p°φpadech, kdy je
stejn²m jmΘnem oznaΦeno n∞kolik checkbox∙. V t∞chto p°φpadech je
nutnΘ atributu VALUE p°i°adit r∙znΘ hodnoty.
TlaΦφtka typu "radio" se chovajφ obdobn∞ jako checkboxy.
VyznaΦujφ se kruhov²m zaÜkrtßvacφm polφΦkem a v danΘm okam₧iku
je mo₧nΘ mφt zaÜkrtnuto maximßln∞ jedno polφΦko. T∞mto tlaΦφtk∙m
musφ b²t hodnota VALUE zadßna povinn∞. I v tomto p°φpad∞ je mo₧nΘ
nastavit p°edvolbu pomocφ atributu CHECKED. Pokud bude tato
p°edvolba pou₧ita u vφce prvk∙, bude pou₧it jako aktivnφ poslednφ z
nich.
Atribut TYPE="reset" je znaΦkou INPUT
zobrazen jako obyΦejnΘ tlaΦφtko, kterΘ mß vÜak specißlnφ funkci.
Stisknutφm tohoto tlaΦφtka dojde k p°enastavenφ vÜech ·daj∙ ve
formulß°i na poΦßteΦnφ nastavenφ. Standardnφ nßpis "Reset"
lze zm∞nit nastavenφm atributu VALUE.
<INPUT TYPE="submit">
TakΘ funkce typu "submit" je zpracovßna stejn²m zp∙sobem
jako typ "reset". AvÜak stisknutφm tohoto tlaΦφtka
dojde k odeslßnφ zaÜkrtnut²ch hodnot na server k dalÜφmu zpracovßnφ.
I u tΘto funkce je mo₧nΘ p°enastavit standardnφ nßpis "Submit
Query" pomocφ atributu VALUE.
<TEXTAREA> ... </TEXTAREA>
Nßv∞Ütφ TEXTAREA umo₧≥uje ve formulß°i zadat vφce°ßdkov² text.
èφ°ku okna (udanou poΦtem znak∙) a v²Üku okna je mo₧nΘ nastavit
atributy COLS a ROWS. T∞mito atributy vÜak nenφ dΘlka
textu omezena, nebo¥ v okn∞ je mo₧nΘ listovat. Text mezi poΦßteΦnφm
a koncov²m nßv∞Ütφm TEXTAREA bude zapsßn v okn∞ jako p°edvolba.
pßrovß znaΦka slou₧φcφ k definici vφce°ßdkovΘho vstupnφho pole formulß°e;
smφ se vyskytnout pouze v prvku FORM a nesmφ b²t vno°ovßna; text ulo₧en²
mezi poΦßteΦnφ a koncovou znaΦku je vlo₧en do pole jako p°edvolba
name
symbolickΘ jmΘno odesφlanΘ serveru
rows
poΦet °ßdk∙ pole (v poΦtu znak∙)
cols
poΦet sloupc∙ pole (v poΦtu znak∙)
wrap
zalamovßnφ textu uvnit° pole off data jsou odesφlßna p°esn∞ jak jsou zapisovßna
(implicitnφ hodnota) virtual text je v poli zalamovßn, ale data jsou odesφlßna
p°esn∞ jak byla zapsßna physical text je v poli zalamovßn a v bod∞ zlomu je
odesφlßn nov² °ßdek
align
ovliv≥uje umφst∞nφ objektu v∙Φi okolφ top hornφ okraj objektu bude zarovnßn s hornφm okrajem
°ßdku middle st°ed objektu bude zarovnßn na ·Φa°φ °ßdku bottom dolnφ okraj objektu bude zarovnßn se spodnφm
okrajem °ßdku left vodorovnΘ umφst∞nφ objektu na lev² okraj right vodorovnΘ umφst∞nφ objetu na prav² okraj
disabled
zobrazenφ pole bez mo₧nosti jeho modifikace
error
hlßÜenφ pro p°φpad neplatnΘ hodnoty pole
<SELECT>
Funkce SELECT umo₧≥uje v²b∞r ze seznamu nabφzen²ch mo₧nostφ, kterΘ jsou
v₧dy v rßmci kontejneru <SELECT> uvozeny nßv∞Ütφm <OPTION>.
absolutnφ/relativnφ URL grafiky zobrazovanΘ pro tuto nabφdku mφsto
OPTION text∙ identifikovan²ch na grafice jako "hotspot"
width
po₧adovanß Üφ°ka grafiky
height
po₧adovanß v²Üka grafiky
units
jednotka pro zadßnφ rozm∞r∙ grafiky (implicitn∞ pixely)
align
ovliv≥uje umφst∞nφ objektu v∙Φi okolφ top hornφ okraj objektu bude zarovnßn s hornφm okrajem
°ßdku middle st°ed objektu bude zarovnßn na ·Φa°φ °ßdku bottom dolnφ okraj objektu bude zarovnßn se spodnφm
okrajem °ßdku left vodorovnΘ umφst∞nφ objektu na lev² okraj right vodorovnΘ umφst∞nφ objetu na prav² okraj
urΦenφ odesφlanΘ hodnoty pro tuto volbu; nenφ-li atribut uveden,
odesφlß se obsah volby
shape
tvar "hotspotu" na grafickΘm objektu definovanΘm
atributem src; navrhovanΘ hodnoty jsou:
"default", "circle x,y,z", "rect x,y,w,h",
"polygon x1,y1,x2,y2,..."
disabled
zobrazenφ hodnoty bez mo₧nosti jejφ volby
error
hlßÜenφ pro p°φpad neplatnΘ volby
Standardnφ tlaΦφtka
Pomocφ formulß°ov²ch funkcφ lze do dokumentu zabudovat takΘ standardnφ
tlaΦφtka slou₧φcφ jako hyperlinky. Vysv∞tlenφ podß nßsledujφcφ p°φklad.