Obrada forme u jednoj PHP datoteci
U prethodnoj lekciji naša forma je bila smeštena
na jednoj stranici, a slala se na drugu.
Zapravo to nije neophodno. Ako ostavite
atribut action praznim ili ga uklonite
potpuno, forma će biti poslata na ovu
istu stranicu.
Kako će to raditi: pri prvom ulasku na stranicu popunićemo formu podacima i pritisnuti dugme. Nakon toga stranica će se osvežiti i njen kod će se ponovo izvršiti, ali već sa podacima forme.
Hajde da pogledamo primer. Neka imamo u jednoj datoteci formu i njen obradu:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Pri prvom ulasku na stranicu funkcija var_dump
će ispisati prazan niz. A nakon slanja forme
ispisaće već podatke forme. To znači prvi
put $_GET će biti prazan, a drugi put
- će sadržati podatke forme.
Ovo može dovesti do problema. Neka, na primer, u formu unosimo brojeve i želimo da ispišemo zbir tih brojeva na ekran:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
U ovom slučaju pri prvom ulasku na stranicu
vidjećemo greške PHP, povezane sa činjenicom da je
niz $_GET prazan, a mi pristupamo
njegovim elementima.
Ovde treba reći da se kod vas greške možda neće ni pojaviti u pregledaču. U tom slučaju proverite da li vam je uključen ispis grešaka PHP, kao i da li je kod vas prvi ulazak na stranicu i da li u adresnoj liniji nema podataka forme.
Hajde da rešimo problem. Za to dodajmo uslov, u kome ćemo proveravati to da li je forma poslata.
Na primer, možemo proveravati $_GET na
ne-praznoću. Ako $_GET nije prazan -
onda je forma poslata i možemo izvršiti
sabiranje. U suprotnom mi smo još uvek na
prvom ulasku na stranicu i sabiranje neće biti izvršeno.
Evo, ispravljen kod:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Pitajte korisnika za prezime, ime i patronim (ime oca). Nakon slanja forme ispišite na ekran unete podatke.