IZRADA SAJTA za 10 €

Home   FORUM   Toplista   HTML   CSS   JavaScript   PHP   DIZAJN   SEO   Mapa


KONTAKT
izuzetan[at]gmail.com






TOP LISTA SAJTOVA
Igrice
Slike

HTML forme i PHP cod u jednom fajlu

U srednjim i većim aplikacijama vrlo je nepraktično imati odvojene dokumente za prikaz i obradu forme iz razloga što bi se broj dokumenata sajta popeo do tako velikog broja da bi postao problem praćenja šta je gde unutar strukture dokumenata sajta. Iz tog razloga je poželjno formu i obradu forme držati unutar istog dokumenta.

<html><head>
<title>Prikaz i obrada forme unutar jednog dokumenta</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
</head><body>
<h2>Prikaz i obrada forme unutar jednog dokumenta</h2>
<?
if (!$_POST["submitaj"]){
?>
<form method="post" action="<?=$PHP_SELF?>">
Unesi svoje ime:<br>
<input name="ime" type="text" ><br>
<input name="submitaj" type="submit" value="Posalji">
</form>
<?
}else{
echo "Pozdrav ".$_POST["ime"];
}
?>
</body></html>

Ključna stvar za logiku cele skripte je:

if (!$_POST["submitaj"]){

Ova linija proverava da li postoji vrednost u elementu $_POST["submitaj"]. Ako smo ispunili formu i kliknuli na "Pošalji" $_POST["submitaj"] imaće vrednost te će se preskočiti iscrtavanje forme i prećiće se u "else" deo if strukture, to jest u deo za obradu forme. Ako pak nema vrednost onda će se ispisivati forma. Obično nema vrednost kad prvi put otvaramo skriptu. Moramo napomenuti da u ovoj logici ima smisla proveravati samo vrednosti za submit gumbe jer se jedino sa njima garantuje postojanje vrednosti ili nepostojanje tačno onda kad je šta potrebno. Recimo, u primeru nema smisla proveravati postojanje vrednosti u $_POST["ime"] kao uslov prikaza ili obrade forme, jer surfer možda ne ispuni to polje, te bi mu se nakon submitanja forme nanovo prikazala.

$PHP_SELF je promenjljiva koju definiše sam PHP. U njoj se nalazi ime trenutno aktivnog fajla. Pošto mi želimo da se forma prikaže i obradi unutar istog fajla, to je tačno ono što nama treba. Iako smo tu mogli upisati ime našeg dokumenta, korišćenje $PHP_SELF je preporučljivo, jer nekad možemo promeniti ime našeg dokumenta, a u njemu će sve i dalje raditi kako je zamišljeno, zato što PHP sam namešta njenu vrednost.

Ako želimo imati u jednoj formi više submit gumba, logika je malo drugačija. Razlozi za upotrebu više submit gumba u jednoj formi mogu biti različiti. Na primer kada se radi neki administracijski alat, gde je potrebno napraviti više različitih operacija nad istim podacima (recimo želimo omogućiti i brisanje jedne po jedne novosti u našoj news skripti, ali i želimo imati gumb koji bi obrisao sve poruke odjednom).

Najbolje je ovo objasniti na konkretnom primeru. Primer se sastoji od forme sa dva submit gumba, i od obrade te forme unutar istog dokumenta. U obradi forme ćemo ispisati poruku koji je gumb iskorišćen.

<html><head>
<title>Forma sa više submit gumba</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
</head><body>
<h2>Forma sa više submit gumba</h2>
<?
if ($REQUEST_METHOD!="POST"){
?>
<form method="post" action="<?=$PHP_SELF?>">
<input type="submit" name="gumb1" value="Gumb 1"><br>
<input type="submit" name="gumb2" value="Gumb 2">
</form>
<?
}else{
if($_POST["gumb1"])
echo "Pritisnuli ste gumb 1";
if ($_POST["gumb2"])
echo "Pritisnuli ste gumb 2";
}
?>
</body></html>

Ovog puta smo kao uslov prikaza ili obrade forme koristili $REQUEST_METHOD jer neznamo koji je gumb kliknut. Poenta leži u tome da će se nakon sumbitanja forme pomoću jednog od tih gumba popuniti vrednost unutar superglobalne $_POST varijable samo onog gumba koji je pritisnut, što dokazuje deo koda koji obrađuje formu.

if ($_POST["gumb1"])echo "Pritisnuli ste gumb 1";
if ($_POST["gumb2"])echo "Pritisnuli ste gumb 2";

Napominjem, u ovim slučajevima nemoguće je koristiti GET metodu jer se tad u $REQUEST_METHOD uvek nalaziti vrednost iako ne postoje podaci u query stringu, a to će prouzrokovati preskakanje ispisa forme.

Drugo rešenje problema je da se u if-u napiše sledeća logika:

if (!($_POST["gumb1"] or $_POST["gumb2"])){

Normalno, uočavate da bi sa ovom shemom morali navesti sve postojeće gumbe da osiguramo pravilno ponašanje našeg malenog sistema prikaza i obrade forme. To je jednostavno za mali broj gumba ali ako ih imamo desetak namučićemo se pisanjem.

Copyright © 2010 BUbaj. Powered By bubaj.com
PHP    PHP sintaksa    Fajl    Niz    String    Funkcija    Objektno programiranje    MySQL    Unos fajla    Datum    Forme    Sesija    Registracija