PHP – Formuláře

php-logo[1]

V dnešním díle se podíváme na velmi častý způsob užití PHP, a sice formuláře. Respektive zpracování dat z formulářů.

Co to jsou formuláře a jak je vytvořit byste měli vědět z HTML. Pro jistotu to ale ještě níže zopakuji. Hlavně se ale v tomto článku budou zaobírat tím, jak PHP zpracovává data z formuláře a jak s nimi potom může nakládat.

Formuláře

V jazyce HTML se pro formulář užívá značka <form>. Je to párový tag, takže formulář začíná <form> a končí </form>. Začínající tag <form> má ješte nějaké parametry, které ukáži a vysvětlím na příkladu níže. Samotný obsah formuláře se potom tedy vkládá mezi otevírací a uzavírací tag.

Element form

Výše už bylo nastíněno, jak se formulář zapisuje… ale neuvedl jsem některé důležité parametry, které se píší k otevírací značče formuláře. Prvním z nich je name, který udává jméno formuláře. Dalším z nich je action, který udává, kde se má formulář odeslat. Pokud např. je formulář v souboru index.php a my jej tam chceme odeslat, napíšeme action=“index.php“. Pokud bychom nechtěli to takhle vypisovat, lze to obejít pomocí php, že do složených závorek vložíme jednoduchý kód, který zajistí, že se fomulář odešle do daného souboru: <?php echo $PHP_SELF ?>, takže to potom vypadá takto: action=“<?php echo $PHP_SELF ?>“. Dalším parametrem je method. Ten udává, jak se formulář odešle. Může být buď GET nebo POST. Liší se od sebe ve formě odeslání dat. GET je posílá přes adresní řádek – takže pak adresa může vypadat třeba takto: index.php?jmeno=pavel&prijmeni=novák….. Metoda POST data posílá bezpečněji a je také mnohem hojněji používanější. Posledním důležitým parametrem, který se ale používá hlavně, když se přes formulář odesílají multimediální soubory, je enctype. Ten udává, jak jsou data odeslaná formulářem kódovaná. Nejčastěji se používa hodnota: enctype=“multipart/form-data“.

Prvky formuláře

Mezi tagy pro formulář toho můžeme vložit spoustu. Například „input“, textové pole, zaškrtávací políčka, „přepínače“, skryté pole, tlačítka, formuláře pro odeslání souboru…
INPUT
Element se používá vlastně skoro pro všechno. Může mít podobu obdélníčku na text, na heslo, může to být tlačítko, či formulář na nahrání souboru. Element input má různé parametry, z nichž nejdležitější jsou type a name. Bez těchto 2 parametrů se prostě nikam nepohneme. Element type udává, jakého typu bude daný „input“. Možná hodnoty:

text Klasický obdélníček sloužící k zadávání textu
password Opět obdélníček, slouží k zadávání hesel
checkbox Zaškrtávací políčko zaškrtávací políčko
radio Přepínač Přepínač č. 1
hidden Pole, které se nezobrazí, můžeme do něj např. uložit hodnotu, kterou uživatel nevidí
submit Tlačítko, sloužící k odeslání formuláře
reset Tlačítko, sloužící k vyresetování hodnot formuláře
image Tlačítko s obrázkem
file Pole, pro nahrání souboru
button Tlačítko, bez předem definované funkce

Takže to by bylo k input a různým jeho hodnotám vše. Nyní se podíváme na textarea a to bude z výletu do HTML vše.
Textarea se vkládá pomocí tagů <textarea> </textarea>. Mezi tagy se může vkládat nějaký text, který má stejnou funkci jako u inputu parametr value. Otevírací tag má opět několik parametrů.
<textarea cols="60" rows="10" name="textarea> obsah textarey</textarea>
Parametr name snad není třeba vysvětlovat, parametry cols a rows udávají počet sloupců, resp. řádků textarey. Také můžeme nastavit textaree pevnou výšku a šířku pomocí CSS vlastností width a height, ale to bychom poté nemohl uživatel libovolně měnit její velikost (táháním za pravý dolní roh).

Formuláře a PHP

Nyní se konečně podíváme na samotné propojení formulářů a PHP. Když budeme chtít data z formuláře zpracovat, musíme prvni zkontrolovat, zda byl formulář odeslán. To uděláme tak, že zkontrolujeme pomocí isset, zda bylo tlačítko zmáčknuto (příklad viz. níže). Nyní máme formulář odeslaný… a teď nějak musíme data z formuláře vydolovat. Každý element formuláře má nějaké jméno (parametr name). Ten se použije k volání proměnné, ve které je uložena hodnota z danného prvku. Tzn. máme políčko na zadávání textu. To má nějaké jméno. V PHP se uloží hodnota tohoto políčka do proměnné, které se jmenuje stejně jako samotné políčko. Příklad opět viz. níže. To by bylo takhle obecně vše. Nyní se přesuneme k samotnému příkladu, na kterém to půjde lépe vidět.
<form name="pokusny_formular" method="post" action="<?php echo $PHP_SELF ?>">
<input type="text" name="jmeno" maxlenght="30">Jméno <br>
<input type="text" name="prijmeni maxlenght="30">Příjmení<br>
<input type="radio" name="pohlavi" value="muz">Muž
<input type="radio" name="pohlavi" value="zena">Žena
<br>
<input type="file" name="avatar" accept="image/jpeg" /><br />
<input type="submit" name="odeslat" value="Odešli">
</form>
<?php
if(isset($_POST['odeslat'])) {
echo $_POST['jmeno']."
";
echo $_POST['prijmeni']."
";
echo $_POST['pohlavi']."
";
echo $_POST['avatar']."
";
}
?>

UKÁZKA
Takto nějak by mohl například vypadat jednoduchý formulář. Samozřejmě zde chybí kontroly, zda uživatel vyplnil jméno… ale pro pochopení, jak se zpracovávají data z formuláře nám to stačí. Možná se říkate, proč u proměnných vydolovaných z formuláře píši nějaké nesmyslené $_POST a hranaté závorky. Je to kvůli bezpečnosti, protože takhle jde hůře podstrčit proměnnou. Pokud byste formulář odesílali metodou GET, tak se místo $_POST píše $_GET.
To by bylo tak zevrubně k formulářům vše. Možná se k nim ještě vrátíme v některém z dalších článků. Případné dotazy směřujte opět do komentářů pod článek.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>