Űrlap feldolgozása egyetlen PHP fájlban
Az előző leckében az űrlapunk egy oldalon volt elhelyezve,
egy másik oldalra pedig küldtük el.
Valójában ez nem szükséges. Ha az
action attribútumot üresen hagyjuk
vagy teljesen eltávolítjuk, akkor az űrlap
ugyanarra az oldalra lesz elküldve.
Hogyan fog működni: amikor először lépetünk az oldalra, kitöltjük az űrlapot adatokkal és rákattintunk a gombra. Ezután az oldal újratöltődik és a kódja újra lefut, de most már az űrlap adataival.
Nézzük meg egy példán. Tegyük fel, hogy egy fájlban van az űrlap és annak feldolgozása:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Amikor először lépetünk az oldalra, a var_dump
függvény egy üres tömböt fog kiírni. Az űrlap elküldése után
pedig már az űrlap adatait fogja kiírni. Vagyis az első
alkalommal a $_GET üres lesz, a második alkalommal
pedig tartalmazni fogja az űrlap adatait.
Ez problémákhoz vezethet. Tegyük fel például, hogy számokat adunk meg az űrlapban és ki szeretnénk írni ezeknek a számoknak az összegét a képernyőre:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
Ebben az esetben, amikor először lépetünk az oldalra,
PHP hibákat fogunk látni, ami annak köszönhető, hogy a
$_GET tömb üres, mi viszont hivatkozunk
annak elemeire.
Itt meg kell jegyezni, hogy Önnél előfordulhat, hogy a hibák meg sem jelennek a böngészőben. Ebben az esetben ellenőrizze, hogy a PHP hibáinak megjelenítése be van-e kapcsolva, és győződjön meg arról is, hogy Ön az oldalra először lép, és a címsorban nincsenek az űrlap adatai.
Javítsuk meg a problémát. Ehhez adjunk hozzá egy feltételt, amellyel ellenőrizzük, hogy az űrlap elküldésre került-e.
Például ellenőrizhetjük, hogy a $_GET
tömb nem üres-e. Ha a $_GET nem üres -
akkor az űrlap elküldésre került, és végrehajtható az
összeadás. Ellenkező esetben még mindig
először járunk az oldalon, és az összeadás nem lesz végrehajtva.
Tehát itt a javított 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'];
}
?>
Kérje meg a felhasználót, hogy adja meg a vezetéknevét, keresztnevét és születési nevét. Az űrlap elküldése után írja ki a képernyőre a megadott adatokat.