Spracovanie formulára v jednom súbore PHP
V predchádzajúcej lekcii bol náš formulár umiestnený
na jednej stránke, ale odoslaný na inú.
V skutočnosti to nie je nevyhnutné. Ak ponecháte
atribút action prázdny alebo ho úplne odstránite,
formulár bude odoslaný na tú istú stránku.
Ako to bude fungovať: pri prvom vstupe na stránku vyplníme formulár údajmi a klikneme na tlačidlo. Potom sa stránka obnoví a jej kód sa vykoná znova, ale už s údajmi z formulára.
Pozrime sa na príklad. Nech máme v jednom súbore formulár a jeho spracovanie:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Pri prvom vstupe na stránku funkcia var_dump
vypíše prázdne pole. A po odoslaní formulára
vypíše už údaje z formulára. To znamená, že prvý
krát bude $_GET prázdne, a druhý krát
- bude obsahovať údaje formulára.
To môže viesť k problémom. Nech, napríklad, do formulára budeme zadávať čísla a chceme vypísať súčet týchto čísel na obrazovku:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
V tomto prípade pri prvom vstupe na stránku
uvidíme chyby PHP, spojené s tým, že
pole $_GET je prázdne, a my pristupujeme
k jeho prvkom.
Tu treba povedať, že u vás sa chyby nemusia objaviť v prehliadači. V tomto prípade skontrolujte, že máte zapnutý výpis chýb PHP, a tiež sa uistite, že máte prvý vstup na stránku a v adresnom riadku nie sú údaje formulára.
Opravme tento problém. Preto pridajme podmienku, v ktorej budeme kontrolovať to, že formulár bol odoslaný.
Napríklad, môžeme kontrolovať $_GET na
neprázdnosť. Ak $_GET nie je prázdne -
tak formulár bol odoslaný a môžeme vykonávať
sčítanie. V opačnom prípade máme ešte
prvý vstup na stránku a sčítanie sa nevykoná.
Takže, tu 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'];
}
?>
Opýtajte sa používateľa na priezvisko, meno a priezvisko. Po odoslaní formulára vypíšte na obrazovku zadané údaje.