(base) pirat@143-nbdell-04:~ $ telnet vyuka.ookami.cz 80 Trying 178.217.244.12... Connected to easy2.xnet.cz. Escape character is '^]'. GET / HTTP/1.1 HTTP/1.1 400 Bad Request Date: Tue, 17 Mar 2026 10:13:55 GMT Server: Apache/2.2.13 (FreeBSD) mod_ssl/2.2.13 OpenSSL/0.9.8q DAV/2 PHP/5.2.11 with Suhosin-Patch Content-Length: 372 Connection: close Content-Type: text/html; charset=iso-8859-1 400 Bad Request

Bad Request

Your browser sent a request that this server could not understand.


Apache/2.2.13 (FreeBSD) mod_ssl/2.2.13 OpenSSL/0.9.8q DAV/2 PHP/5.2.11 with Suhosin-Patch Server at easy2.xnet.cz Port 80
Connection closed by foreign host. (base) pirat@143-nbdell-04:~ $ telnet vyuka.ookami.cz 80 Trying 178.217.244.12... Connected to easy2.xnet.cz. Escape character is '^]'. GET / HTTP/1.1 Host: vyuka.ookami.cz HTTP/1.1 200 OK Date: Tue, 17 Mar 2026 10:15:51 GMT Server: Apache/2.2.13 (FreeBSD) mod_ssl/2.2.13 OpenSSL/0.9.8q DAV/2 PHP/5.2.11 with Suhosin-Patch Last-Modified: Mon, 02 Mar 2026 11:40:17 GMT ETag: "131b6ac-30fa-64c090d034a40" Accept-Ranges: bytes Content-Length: 12538 Content-Type: text/html výuka@ookami.cz
http://studuj.bioinformatiku.cz

2025/2026 LS

2025/2026 ZS

2024/2025 LS

2024/2025 ZS

2023/2024 LS

2023/2024 ZS

2022/2023 LS

2022/2023 ZS

2021/2022 LS

2021/2022 ZS

2020/2021 LS

2020/2021 ZS

2019/2020 LS

2019/2020 ZS

2018/2019 LS

2018/2019 ZS

2017/2018 LS

2017/2018 ZS

2016/2017 LS

2016/2017 ZS

2015/2016 LS

2015/2016 ZS

2014/2015 LS

2014/2015 ZS

2013/2014 LS

2013/2014 ZS

2012/2013 LS

2012/2013 ZS

2011/2012 LS

2011/2012 ZS

2010/2011 LS

2010/2011 ZS

2009/2010 ZS

BioInfo = Praktikum z bioinformatiky I & II @ VŠCHT
WA, WT = Webové aplikace a Webové technologie @ VŠCHT
VS = Verzovací systémy @ VŠCHT
Python = Základy programování v jazyce Python @ VŠCHT
LP1, LP2 = Laboratorní projekt I & II @ VŠCHT
P1, P2 = Programování I & II @ VŠCHT
IP = Internetové publikování @ VŠCHT & MU & ČVUT
BI-PYT, PYT = Programování v Pythonu @ ČVUT & VŠCHT
BI-SKJ & BIK-SKJ = Skriptovací jazyky @ ČVUT
BIE-SKJ = Scripting languages @ CTU (ČVUT)
SJ = Skriptovací jazyky @ VŠCHT
AXML = Aplikované XML-technologie @ VŠCHT



Spoustu dobrých myšlenek, o které můžete zakopnout v materiálech na těchto stránkách, mám od svých učitelů programování a dalších předmětů, kterými byli v průběhu věků především Milan Klier, Václav Kos, Míla Nič, Míra Šimek, Béďa Košata a Petr Zámostný. Obzvláště Béďovi, po kterém jsem přebíral výuku Python'u na VŠCHT, se omlouvám za všechna ta místa, kde jsem ho neuvedl jako původního autora.

Jakékoliv chyby v materiálech na těchto stránkách padají samozřejmě na moji hlavu. Pozorným studentům se jich za ta léta již podařilo odhalit mnoho, ale já jejich bohulibou činnost nabourávám neustálým vylepšováním textů i příkladů, takže budoucí generace se rozhodně nudit nemusí ^_^

For corrections of translations I am greatly indebted to Brent Rees. All errors left are mine of course.

PS: Ikonky odkazů z projektu Iconize (veeery old) a Dataserver icons created by Vectorsclub - Flaticon.

Connection closed by foreign host. (base) pirat@143-nbdell-04:~ $ telnet vyuka.ookami.cz 80 Trying 178.217.244.12... Connected to easy2.xnet.cz. Escape character is '^]'. GET /materialy/web/html/forms.xml HTTP/1.1 Host: vyuka.ookami.cz HTTP/1.1 200 OK Date: Tue, 17 Mar 2026 10:20:44 GMT Server: Apache/2.2.13 (FreeBSD) mod_ssl/2.2.13 OpenSSL/0.9.8q DAV/2 PHP/5.2.11 with Suhosin-Patch Last-Modified: Tue, 29 Mar 2022 12:11:27 GMT ETag: "131d7fd-4c70-5db5a540979c0" Accept-Ranges: bytes Content-Length: 19568 Content-Type: application/xml HTML5 Jiří Novotný Formuláře 2014-01-xx

(přednášku připravil Jiří Novotný)

Formuláře neboli forms jsou něčím, bez čeho by se Internet (respektive World Wide Web) neobešel. Zajišťují totiž zásadní věc – odesílání dat na server, kde dojde k jejich zpracování, většinou nějakým skriptovacím jazykem (PHP, Python apod.).

V této lekci nás ale bude primárně zajímat používání různých ovládacích prvků, které s sebou přinesl standard HTML5.

V textu budou jiným písmem, než má obyčejný text, odlišeny názvy elementů, atributů a jejich hodnot:

Pokud se bude mluvit o konkrétních ovládacích prvcích, zobrazených na výstupu, budou napsány kurzívou.

Některé atributy jsou typu boolean a jejich použití může být lehce matoucí, takže tady je krátká vysvětlivka:

false jsou tedy automaticky všechny boolean atributy, které nezapíšete k danému elementu.

A jak mohou být zapsány? Oficiálně by měly fungovat dva zápisy:

Konkrétní a fungující příklad: <input name="bool" type="text" required="required" />

Základním elementem formulářů je element <form>. V něm můžou a nemusí být jednotlivé ovládací prvky formuláře (anglicky widgets, dále jen prvky). Prvky (např. <input>) je totiž, jak sami uvidíte, možné přidávat i mimo <form>. Dalo by se vlastně říci, že <form> je tu hlavně proto, aby skupině prvků přiřazoval stejné vlastnosti a také aby prohlížeč věděl, hodnoty kterých prvků má odeslat serveru.

Pak tu máme některé další hlavní elementy, které slouží hlavně k přehledné navigaci ve formuláři. Je dobré zmínit, že tyto elementy nejsou povinné, nicméně je dobré je používat právě kvůli zmíněné přehlednosti. Hned na dalším slajdu si na příkladu ukážeme, jak vypadají :)

Teď se podíváme na logické propojování prvků a <form>.

Jak jistě víte, každý element v HTML má atribut id, který ho jednoznačně identifikuje v rámci dokumentu. Formulářové elementy nejsou výjimkou. Některé mají atribut form, který je přiřazuje k určitému <form>. Hodnotou atributu form je hodnota id příslušného <form>. Díky form mohou prvky být mimo <form>, ale stále s ním být „ve spojení“, tj. data z těchto prvků jsou zpracována příslušným <form>. Bohužel to neznamená, že by prvky virtuálně ležely uvnitř <form> a sdílely tak např. jeho stylování – jde jen o jejich zpracování.

Nicméně např. reset button dělá to, co by normálně dělal, kdyby ležel uvnitř <form>, a to obnovování formuláře do původní podoby.

Element <label> má speciální atribut for, který ho přiřazuje k určitému prvku. Jeho hodnotou je hodnota id příslušného prvku. Pokud uživatel klikne na takto přiřazený label, aktivuje se s ním spojený prvek.

Možná Vás napadlo, jaký je rozdíl mezi atributy id a name, když oba pojmenovávají elementy (prvky) – celkem zásadní, protože oba slouží k jiným účelům:

Malý příklad, proč hodnota name nemusí být jedinečná:

Dá se tedy říct, že v případě prvků spadajících do stejné kategorie je hodnota name něco jako „krabice“ a hodnoty value pak její „obsah“.

Tento formulář obsahuje tři samostatné bloky:

  1. <form>, v němž leží <fieldset> s prvky a mimo <fieldset> ještě <label>:
    • Uvnitř <fieldset> máme jednoduchý <input> typu text a hned u něj <input> typu reset (reset button), který obnoví formulář do původní podoby.
    • Pak následuje <label> s atributem for="reset_button", čímž je k tomuto prvku přiřazen. Na tohle jsem upozorňoval v předchozím slajdu – pokud je prvek uzavřen do <label>, chová se <label> stejně, jako by měl atribut for="id_prvku"
  2. Samostatný <fieldset>, neležící uvnitř <form>:
    • Zde máme uvnitř <fieldset> <input> typu reset přiřazený k našemu <form>, a proto po kliknutí normálně obnoví formulář. Logicky mě napadlo, že pokud bych tento <fieldset> přiřadil k našemu <form>, byly by k němu přiřazeny i všechny prvky ležící uvnitř tohoto <fieldset>. Bohužel se zdá, že tato podle mě celkem užitečná věc zatím funguje jen v Opeře...
  3. Úplně samostatný label a reset button, přiřazený k <form>:
    • Všimněte si, že <label> není přiřazen k <input> a po kliknutí tedy reset button neaktivuje.

Odkazování na <form> může mít jedno zajímavé využití:

A co z toho plyne? :) Můžeme si vytvořit několik „šablonových“ <form>, jednotlivé prvky mít rozesety po stránce a odkazovat je podle potřeby na příslušné <form>.

Jak už bylo řečeno dříve, <form> je naším základním formulářovým elementem. Pojďme se nyní podívat na jeho hlavní atributy:

Největší „sborník“ prvků je <input> se svým atributem type (přehledný výpis zde a také zde na webu).

Pak zde však máme i jiné prvky, reprezentované vlastními elementy: <button>, <select>, <datalist>, <optgroup>, <option>, <textarea>, <output>, <progress>, <meter>.

Postupně si je všechny probereme.

Určitě Vás hned napadl rozdíl mezi <input type="button"> a <button> na jedné straně a <input type="text"> a <textarea> na druhé. Pojďme si to trochu osvětlit:

Connection closed by foreign host. (base) pirat@143-nbdell-04:~ $ telnet python.org 80 Trying 151.101.192.223... Connected to python.org. Escape character is '^]'. GET / HTTP/1.1 Host: python.org HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 0 Server: Varnish Retry-After: 0 Accept-Ranges: bytes Date: Tue, 17 Mar 2026 10:22:41 GMT Via: 1.1 varnish X-Served-By: cache-vie6354-VIE X-Cache: HIT X-Cache-Hits: 0 X-Timer: S1773742961.266326,VS0,VE0 Location: https://www.python.org/ Strict-Transport-Security: max-age=315360000; preload Connection closed by foreign host. (base) pirat@143-nbdell-04:~ $