Przetwarzanie formularza w jednym pliku PHP
W poprzedniej lekcji nasz formularz był umieszczony
na jednej stronie, a wysyłany był na inną.
W rzeczywistości nie jest to konieczne. Jeśli pozostawisz
atrybut action pusty lub całkowicie go usuniesz,
to formularz zostanie wysłany na tę
samą stronę.
Jak to będzie działać: przy pierwszym wejściu na stronę wypełnimy formularz danymi i naciśniemy przycisk. Po tym strona odświeży się i jej kod wykona się ponownie, ale już z danymi formularza.
Spójrzmy na przykład. Załóżmy, że mamy w jednym pliku formularz i jego przetwarzanie:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Przy pierwszym wejściu na stronę funkcja var_dump
wypisze pustą tablicę. A po wysłaniu formularza
wypisze już dane formularza. Czyli za pierwszym
razem $_GET będzie pusty, a za drugim razem
- będzie zawierał dane formularza.
To może prowadzić do problemów. Załóżmy, na przykład, że będziemy wprowadzać do formularza liczby i chcemy wyświetlić sumę tych liczb na ekranie:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
W tym przypadku przy pierwszym wejściu na stronę
zobaczymy błędy PHP, związane z tym, że
tablica $_GET jest pusta, a my odwołujemy się
do jej elementów.
Należy tu powiedzieć, że u was błędy mogą się nie pojawić w przeglądarce. W takim przypadku sprawdź, czy masz włączone wyświetlanie błędów PHP, a także upewnij się, że to twoje pierwsze wejście na stronę i w pasku adresu nie ma danych formularza.
Naprawmy problem. W tym celu dodamy warunek, w którym będziemy sprawdzać, czy formularz został wysłany.
Na przykład, można sprawdzać $_GET pod kątem
niepustości. Jeśli $_GET nie jest pusty -
to formularz został wysłany i można wykonywać
sumowanie. W przeciwnym razie mamy jeszcze
pierwsze wejście na stronę i sumowanie nie zostanie
wykonane. A oto poprawiony kod:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Zapytaj użytkownika o nazwisko, imię i imię ojca. Po wysłaniu formularza wyświetl na ekranie wprowadzone dane.