Formas apstrāde vienā PHP failā
Iepriekšējā nodarbībā mūsu forma bija izvietota
vienā lapā, bet tika iesniegta uz citu.
Patiesībā tas nav obligāti. Ja atstāj
atribūtu action tukšu vai noņem to
pavisam, tad forma tiks iesniegta uz šo
pašu lapu.
Kā tas darbosies: pirmo reizi ienākot lapā, mēs aizpildīsim formu ar datiem un nospiedīsim uz pogas. Pēc tam lode tiks atsvaidzināta un tās kods tiks izpildīts vēlreiz, bet jau ar formas datiem.
Apskatīsim piemērā. Pieņemsim, ka mums vienā failā ir forma un tās apstrāde:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Pirmo reizi ienākot lapā, funkcija var_dump
izvadīs tukšu masīvu. Bet pēc formas iesniegšanas
tā izvadīs jau formas datus. Tas ir, pirmo
reizi $_GET būs tukšs, bet otro reizi
- saturēs formas datus.
Tas var radīt problēmas. Pieņemsim, ka piemēram, mēs formā ievadīsim skaitļus un vēlamies izvadīt šo skaitļu summu uz ekrāna:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
Šajā gadījumā, pirmo reizi ienākot lapā,
mēs redzēsim PHP kļūdas, kas saistītas ar to, ka
masīvs $_GET ir tukšs, bet mēs piekļūstam
tā elementiem.
Šeit jāsaka, ka jums kļūdas var ne parādīties pārlūkprogrammā. Šajā gadījumā pārbaudiet, vai jums ir ieslēgts PHP kļūdu izvade, kā arī pārliecinieties, ka jums ir pirmais ienākšanas reize lapā un adreses joslā nav formas datu.
Izlabosim problēmu. Lai to izdarītu, pievienosim nosacījumu, kurā pārbaudīsim to, ka forma ir iesniegta.
Piemēram, var pārbaudīt $_GET uz
nav tukšs. Ja $_GET nav tukšs -
tad forma ir iesniegta un var izpildīt
summēšanu. Pretējā gadījumā mums vēl ir
piemērots pirmais ienākšana lapā un summēšana netiks izpildīta.
Tātad, šeit ir labotais kods:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Jautājiet lietotājam uzvārdu, vārdu un otru vārdu. Pēc formas iesniegšanas izvadiet uz ekrāna ievadītos datus.