Práce s daty z formulářů je v PHP velmi snadná. Podíváme se na jednoduché příklady.
Práce s daty z formulářů je v PHP velmi snadná. Obecně lze říci, že každý údaj předaný formulářem je na další stránce dostupný v proměnné, jejíž název je shodný s parametrem name.
Nejlepším řešením, jak situaci vysvětlit, je příklad, který nahradí zdlouhavé vysvětlování:
Na stránce 1 (stranka1.htm) je formulář se dvěma textovými vstupními poli (text a password), jedním "zatrhávacím" čtverečkem (checkbox) , dvojicí přepínacích koleček (radio) a dvěma tlačítky - pro odeslání údajů (submit) a jejich vymazání (reset):
<html>
<head>
<title>Stránka 1 s formulářem</title>
</head>
<body>
<h3>Vyplňte prosím tento formulář</h3>
<form method=post action="stranka2.php3">
Jméno: <input type="Text" name="jmeno"><br>
Heslo: <input type="Password" name="heslo"><br>
Jste student? <input type="Checkbox" name="student" value="ano"><br>
Vaše pohlaví: <input type="Radio" name="pohlavi" value="muz" checked> muž<BR>
<input type="Radio" name="pohlavi" value="zena">žena: <br>
<input type="Submit" value="ODESLAT">
<input type="Reset" value="VYMAZAT">
</form>
</body>
</html>
Po odeslání formuláře bude zavolána stránka (stranka2.php3), ve které budeme mít v proměnné $jmeno textový řetězec z pole Jméno, v proměnné $heslo bude zadané heslo. Tady je potřeba varovat: i když se ve formuláři objevují místo textu hvězdičky, text je předáván nezašifrovaný. Pokud tedy na volané stránce použijete příkaz
echo $heslo;
vypíše se jeho obsah v celé své kráse a přečte si ho každý, kdo vám zrovna kouká přes rameno! Jestliže tento údaj hodláte třeba uložit do databáze (na ty se podíváme v dalších dílech), měli byste heslo zašifrovat. Zde přímo PHP nabízí několik funkcí (Crypt, MD5, nebo primitivní Base64).
K zatrhávacímu políčku se přistupuje takto: políčku je pomocí parametru value přiřazena hodnota "ano", která je však předána pouze v případě, že je políčko zatrženo, jinak je předán prázdný řetězec.
V praxi potom stačí na otestování jednoduchá podmínka:
if ($student=="ano") ...
U radio buttonů je situace podobná. Celá skupina má jednotný název (v tomto případě pohlavi), který je pak použit jako název proměnné, jež obsahuje hodnotu zadanou za parametrem value příslušející tomu jedinému zatrženému radio buttonu. Pokud tedy respondent je muž, proměnná $pohlavi bude obsahovat text "muz".
Další prvky, které můžete ve formulářích použít a v PHP pak zpracovat:
hidden - U tohoto prvku se zadává pouze name a value. Slouží pouze k předání "skrytých" údajů, o kterých uživatel nemusí (nebo by neměl) vědět.
Např.: <input type="hidden" name="pomocnyudaj" value="123456">
Ve formuláři, který vidí uživatel, se opticky nijak neprojeví (hidden = skrytý).
Select - Efektní možnost jak nabídnout uživateli možnost výběru z více položek. Jednotlivé položky se pak uvádějí pomocí volby option.
např.:
<select name="predplatne">
<option value="a">typ A
<option value="b">typ B
<option value="c">typ C
</select>
Pokud chceme dát uživateli možnost vybrat si najednou více položek, stačí v tagu
select přidat parametr
multiple. V tomto případě je ale nutno k názvu přidat hranaté závorky "
[ ]".
První tag by tedy vypadal takto:
<select name="predplatne[]" multiple>
V PHP na další stránce pak budeme mít pole $predplatne.
Textarea - Tento vstupní prvek slouží k zadávání delších údajů. Jeho výhodou je, že může mít řádků a sloupců, kolik si zadáte, navíc je zde možnost rolování.
<textarea name="dlouhytext" rows=10 cols=50> (10 řádků, 50 sloupců)
V poli může být přímo nějaký text zadaný programátorem.
</textarea>
file - Toto je vstupní prvek do "pokročilých" formulářů, kterým můžeme odeslat zároveň s formulářem nějaký soubor.
Příklad:
<form action="stranka2.php3" method=post enctype="multipart/form-data">
<input type=file name=soubor accept="image/*">
</form>
Atribut
enctype udává kódování při přenosu, v tomto případě je nutný, stejně jako použití metody
post.
Parametr accept udává typ souborů, které je možno přenášet (v tomto případě obrázky).
V PHP pak se souborem pracujeme s pomocí 4 proměnných, jejichž jména jsou odvozena od parametru name. V našem případě v proměnné $soubor bude jméno dočasného (je nutno ručně uložit, jinak se po skončení skriptu smaže) souboru, kam PHP data uložil. V proměnné $soubor_size bude velikost přeneseného souboru, v proměnné $soubor_type bude informace o typu souboru a v proměnné $soubor_name bude původní jméno souboru.
Na závěr
Pro přenos formulářových dat slouží dvě metody
(
method=post a
method=get).
Metoda post se používá, pokud formulář obsahuje více dat. Typickým (a nevyhnutelným) případem je přenos souboru - viz výše.
Pro menší formuláře je možno použít metodu get, data jsou pak připojena k samotnému URL volaného skriptu, např.:
http://www.root.cz/search.phtml?word=design
Z hlediska PHP (přístup k proměnným) není mezi nimi žádný rozdíl.
Příště se začneme věnovat jazyku SQL, tedy databázím a jejich použitím pomocí PHP.