HTML forme i PHP

Cilj ovog tutoriala je objasniti kako raditi s HTML formama, te kako se proslijeđuju njihove vrijednosti PHP-u.

HTML form
HTML forma se koristi kako bi se definirao neki skup podataka koji korisnik unosi i šalje serverskom jeziku (PHP) na obradu. Svaka forma može sadržavati neograničen broj elementata (tekstualna polja, dropdown liste, radio, checkbox, texarea, file selector i sl). U HTML-u forma se definira:

<form action="nekifile.php" method="post/get">
...
</form>


Action je datoteka kojoj se šalju podatci. Parametar action može biti prazan, u tom slučaju se podatci šalju istoj datoteci u kojoj je forma definirana. Parametar method može biti POST ili GET. Za prijenos podataka se uglavnom koristi POST metoda, kod nje korisnik ne vidi koje se vrijednosti šalju, dok se kod GET metode vrijednosti prenose preko URL-a.

Jednostavna forma
Napravit ćemo jednostavnu formu. Otvorite datoteku index.php koju ste napravili u prethodnom tutorialu. U njoj obrišite sav sadžaj i napišite iduće:

<form action="" method="post">
Unesi ime: <input type="text" name="ime" value="" />
</form>


Spremite dateku i probajte je pokrenuti preko internet preglednika. Znači napravili smo formu koja sadži tekstualni element za unos imena. No nešto fali? Nemamo gumb koji će poslati podatke. Znači, trebamo dodati submit button, pa će gornji HTML kod izgledati sada ovako:

<form action="" method="post">
Unesi ime: <input type="text" name="ime" value="" />
<br/>
<input type="submit" value="Pošalji" />
</form>


Sada kada ste to napravili, spremite izmjene i ponovno pokrenite stranicu u internet pregledniku. Oplaa, imamo button :). Probajte kliknuti na njega. Hm, ništa se ne događa? Naravno, podatci se pošalju, ali sada još ništa ne radimo s njima.

Idemo opet otvoriti index.php, te iznad HTML koda za formu dodati:

<?php
$ime = $_POST['ime'];
print "Bok " . $ime;
?>


Spremite izmjene i probajte sada pokrenuti stranicu preko preglednika. Upišite neko ime i kliknite na gumb Pošalji. I što smo dobili? Iznad forme je ispisana poruka Bok UnešenoIme. Da smo na formi parametar method umjesto POST stavili GET, tada bi PHP kod morao izgledati ovako:

<?php
$ime = $_GET['ime'];
print "Bok " . $ime;
?>


Probajte se igrati sada s GET metodom. Unesite neko ime i kliknite na gumb Pošalji. Vidite li razliku u adresi? Nakon klika adresa bi umjesto http://localhost/hello_croatia trebao biti http://localhost/hello_croatia/index.php?ime=NekoIme. Znači vrijednost polja se prenijela preko parametra u adresi. I to je razlika između GET i POST metode. Kod POST metode u adresi neće se vidjeti parametri.