Obdelava obrazca v eni datoteki PHP
V prejšnji lekciji je bil naš obrazec nameščen
na eni strani, poslan pa je bil na drugo.
Pravzaprav to ni nujno. Če pustimo
atribut action prazen ali ga popolnoma odstranimo,
bo obrazec poslan na isto
stran.
Kako bo to delovalo: ob prvem obisku strani bomo izpolnili obrazec s podatki in kliknili na gumb. Po tem se bo stran osvežila in njena koda se bo znova izvedla, vendar že s podatki obrazca.
Poglejmo si primer. Predpostavimo, da imamo v eni datoteki obrazec in njegovo obdelavo:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Ob prvem obisku strani bo funkcija var_dump
izpisala prazen niz. Po pošiljanju obrazca
pa bo izpisal že podatke obrazca. Se pravi, prvič
bo $_GET prazen, drugič
- pa bo vseboval podatke obrazca.
To lahko povzroči težave. Recimo, da bomo v obrazec vnašali številke in želimo izpisati vsoto teh števil na zaslon:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
V tem primeru bomo ob prvem obisku strani
videli napake PHP, povezane s tem, da je
niz $_GET prazen, mi pa dostopamo
do njegovih elementov.
Tukaj je treba povedati, da pri vas napake morda ne bodo pojavile v brskalniku. V tem primeru preverite, ali imate vklopljen izpis napak PHP, in se prepričajte, da je to vaš prvi obisk strani in da v naslovni vrstici ni podatkov obrazca.
Popravimo težavo. Za to dodajmo pogoj, v katerem bomo preverjali, ali je bil obrazec poslan.
Na primer, lahko preverimo $_GET glede
na to, ali ni prazen. Če $_GET ni prazen -
je bil obrazec poslan in lahko izvedemo
seštevanje. V nasprotnem primeru je pri nas še
prvi obisk strani in seštevanje ne bo izvedeno.
Torej, tu je popravljena koda:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Vprašajte uporabnika priimek, ime in srednje ime. Po pošiljanju obrazca izpišite na zaslon vnesene podatke.