Formos apdorojimas viename PHP faile
Ankstesnėje pamokoje mūsų forma buvo patalpinta
viename puslapyje, o išsiųsta į kitą.
Tiesą sakant, tai nėra būtina. Jei paliksite
atributą action tuščią arba pašalinsite jį
visiškai, forma bus išsiunčiama į šį
patį puslapį.
Kaip tai veiks: pirmą kartą atėjus į puslapį mes užpildysime formą duomenimis ir spustelėsime mygtuką. Po to puslapis bus atnaujintas ir jo kodas bus vykdomas dar kartą, bet jau su formos duomenimis.
Pažiūrėkime pavyzdžiu. Tarkime, mes turime viename faile formą ir jos apdorojimą:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Pirmą kartą atėjus į puslapį funkcija var_dump
atspausdins tuščią masyvą. O po formos išsiuntimo
ji atspausdins jau formos duomenis. Tai yra, pirmą
kartą $_GET bus tuščias, o antrą kartą
- talpins formos duomenis.
Tai gali sukelti problemų. Tarkime, pavyzdžiui, mes į formą įvesime skaičius ir norime atspausdinti šių skaičių sumą ekrane:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
Šiuo atveju pirmą kartą atėjus į puslapį
mes pamatysime PHP klaidas, susijusias su tuo, kad
masyvas $_GET yra tuščias, o mes kreipiamės
į jo elementus.
Čia reikėtų pasakyti, kad jums klaidos gali ir nepasirodyti naršyklėje. Tokiu atveju patikrinkite, ar pas jus įjungtas PHP klaidų rodymas, taip pat įsitikinkite, kad jūs pirmą kartą atėjote į puslapį ir adreso eilutėje nėra formos duomenų.
Išspręskime problemą. Tam pridėsime sąlygą, kurioje tikrinsime tai, kad forma buvo išsiųsta.
Pavyzdžiui, galima tikrinti $_GET ar jis
nėra tuščias. Jei $_GET nėra tuščias -
vadinasi forma buvo išsiųsta ir galima vykdyti
sumavimą. Priešingu atveju mes dar tik
pirmą kartą atėjome į puslapį ir sumavimas nebus vykdytas.
Taigi, štai pataisytas kodas:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Paklauskite vartotojo pavardės, vardo ir tėvo vardo. Po formos išsiuntimo atspausdinkite ekrane įvestus duomenis.