Zpracování formuláře v jednom souboru PHP
V předchozí lekci byl náš formulář umístěn
na jedné stránce, ale odesílán na jinou.
Ve skutečnosti to není nutné. Pokud ponecháte
atribut action prázdný nebo jej úplně
odeberete, formulář se odešle na tutéž
stránku.
Jak to bude fungovat: při prvním vstupu na stránku vyplníme formulář údaji a stiskneme tlačítko. Poté se stránka obnoví a její kód se znovu provede, ale již s daty formuláře.
Podívejme se na příklad. Předpokládejme, že máme v jednom souboru formulář a jeho zpracování:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Při prvním vstupu na stránku funkce var_dump
vypíše prázdné pole. A po odeslání formuláře
již vypíše data formuláře. To znamená, že poprvé
bude $_GET prázdné, a podruhé
- bude obsahovat data formuláře.
To může vést k problémům. Předpokládejme například, že do formuláře budeme zadávat čísla a chceme zobrazit součet těchto čísel:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
V tomto případě při prvním vstupu na stránku
uvidíme chyby PHP, způsobené tím, že
pole $_GET je prázdné, a my přistupujeme
k jeho prvkům.
Zde je třeba říci, že se u vás chyby v prohlížeči nemusí objevit. V takovém případě zkontrolujte, zda máte zapnutý výpis chyb PHP, a také se ujistěte, že jste na stránku vstoupili poprvé a v adresním řádku nejsou data formuláře.
Pojďme problém opravit. K tomu přidáme podmínku, ve které zkontrolujeme, zda byl formulář odeslán.
Lze například zkontrolovat, zda $_GET
není prázdné. Pokud $_GET není prázdné -
formulář byl odeslán a lze provést
sčítání. V opačném případě jde ještě o
první vstup na stránku a sčítání provedeno
nebude. A tak, zde je opravený kód:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Zeptejte se uživatele na příjmení, jméno a patronymikum (prostřední jméno). Po odeslání formuláře vypište na obrazovku zadané údaje.