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.php<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:

html<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:

html<form action="" method="GET">
  <input name="test1">
  <input name="test2">
  <input type="submit">
</form>

<?php
  if (!empty($_GET)) {
    echo $_GET['test1'] + $_GET['test2'];
  }
?>
Задание 1

Zapytaj użytkownika o nazwisko, imię i imię ojca. Po wysłaniu formularza wyświetl na ekranie wprowadzone dane.