Vormverwerking in een enkele PHP-lêer
In die vorige les was ons vorm op een bladsy geplaas
en na 'n ander gestuur.
Eintlik is dit nie nodig nie. As jy die
kenmerk action leeg laat of dit heeltemal
verwyder, sal die vorm na hierdie
selfde bladsy gestuur word.
Hoe dit sal werk: by die eerste besoek aan die bladsy sal ons die vorm met data vul en op die knoppie klik. Daarna sal die bladsy verfris word en sy kode sal weer uitgevoer word, maar nou met die vormdata.
Kom ons kyk na 'n voorbeeld. Laat ons sê ons het 'n vorm en sy verwerking in een lêer:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Met die eerste besoek aan die bladsy sal die funksie var_dump
'n leë skikking toon. En na die vorm gestuur is
sal dit reeds die vormdata toon. Dit beteken die eerste
keer sal $_GET leeg wees, en die tweede keer
- sal dit die vormdata bevat.
Dit kan tot probleme lei. Kom ons sê, by voorbeeld, ons sal getalle in die vorm invoer en die som van hierdie getalle op die skerm wil vertoon:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
In hierdie geval sal ons met die eerste besoek aan die bladsy
PHP-foute sien, wat verband hou met die feit dat die
skikking $_GET leeg is, terwyl ons daarna
verwys.
Hier moet gesê word dat jy dalk nie foute in die blaaier sal sien nie. In hierdie geval moet jy kontroleer dat PHP-foute aangedui word, en ook seker maak dat dit jou eerste besoek aan die bladsy is en dat daar geen vormdata in die adresbalk is nie.
Kom ons los die probleem op. Voeg 'n voorwaarde by, waarin ons sal kontroleer of die vorm gestuur is.
Byvoorbeeld, jy kan $_GET kontroleer vir
nie-leegheid. As $_GET nie leeg is nie -
dan is die vorm gestuur en kan die
sommering uitgevoer word. Andersins is dit nog
die eerste besoek aan die bladsy en sal sommering nie uitgevoer word
nie. So, hier is die reggestelde kode:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Vra die gebruiker om van, voornaam en tweede naam. Na die vorm gestuur is, vertoon die ingevoerde data op die skerm.