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.php<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:

html<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:

html<form action="" method="GET">
  <input name="test1">
  <input name="test2">
  <input type="submit">
</form>

<?php
  if (!empty($_GET)) {
    echo $_GET['test1'] + $_GET['test2'];
  }
?>
Задание 1

Pitajte korisnika za prezime, ime i patronim (ime oca). Nakon slanja forme ispišite na ekran unete podatke.