Formulierverwerking in één PHP-bestand
In de vorige les was ons formulier geplaatst
op de ene pagina en verzonden naar een andere.
Dat is eigenlijk niet verplicht. Als je het
attribuut action leeg laat of helemaal verwijdert,
dan wordt het formulier naar deze
zelfde pagina verzonden.
Hoe dit werkt: bij het eerste bezoek aan de pagina vullen we het formulier met gegevens en klikken we op de knop. Daarna wordt de pagina vernieuwd en de code wordt opnieuw uitgevoerd, maar nu met de formuliergegevens.
Laten we een voorbeeld bekijken. Stel dat we in één bestand een formulier en de verwerking ervan hebben:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Bij het eerste bezoek aan de pagina zal de functie var_dump
een lege array tonen. En na het verzenden van het formulier
toont het de formuliergegevens. Dat betekent de eerste
keer is $_GET leeg, en de tweede keer
- bevat het de formuliergegevens.
Dit kan tot problemen leiden. Stel, bijvoorbeeld, we voeren getallen in het formulier in en wil de som van deze getallen op het scherm tonen:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
In dit geval zullen we bij het eerste bezoek aan de pagina
PHP-fouten zien, gerelateerd aan het feit dat
de array $_GET leeg is, terwijl we ernaar
proberen toegang te krijgen.
Hier moet gezegd worden dat de fouten mogelijk niet in de browser verschijnen. In dat geval controleer je of de weergave van PHP-fouten is ingeschakeld, en zorg ervoor dat het je eerste bezoek aan de pagina is en dat er geen formuliergegevens in de adresbalk staan.
Laten we het probleem oplossen. Hiervoor voegen we een voorwaarde toe, waarin we controleren of het formulier is verzonden.
Je kunt bijvoorbeeld controleren of $_GET
niet leeg is. Als $_GET niet leeg is -
dan is het formulier verzonden en kan de
optelling worden uitgevoerd. Anders is het nog
het eerste bezoek aan de pagina en wordt de optelling
niet uitgevoerd. Dus, hier is de gecorrigeerde code:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Vraag de gebruiker om achternaam, voornaam en patroniem (tussenvoegsel). Na het verzenden van het formulier, toon de ingevoerde gegevens op het scherm.