Апрацоўка формы ў адным файле PHP

У папярэднім уроку наша форма была размешчана на адной старонцы, а адпраўлялася на другую. На самай справе гэта не абавязкова. Калі пакінуць атрыбут action пустым або ўбраць яго наогул, то форма будзе адпраўляцца на гэтую жа старонку.

Як гэта будзе працаваць: пры першым заходзе на старонку мы запоўнім форму данымі і націснем на кнопку. Пасля гэтага старонка абновіцца і яе код выканаецца зноў, але ўжо з данымі формы.

Давайце паглядзім на прыкладзе. Хай у нас у адным файле ёсць форма і яе апрацоўка:

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

<?php
  var_dump($_GET);
?>

Пры першым заходзе на старонку функцыя var_dump вывядзе пусты масіў. А пасля адпраўкі формы ён вывядзе ўжо даныя формы. Гэта значыць першы раз $_GET будзе пусты, а другі раз - будзе ўтрымліваць даныя формы.

Гэта можа прывесці да праблем. Хай, да прыкладу, мы ў форму будзем уводзіць лікі і хочам вывесці суму гэтых лікаў на экран:

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

<?php
  echo $_GET['test1'] + $_GET['test2'];
?>

У гэтым выпадку пры першым заходзе на старонку мы ўбачым памылкі PHP, звязаныя з тым, што масіў $_GET пусты, а мы звяртаемся да яго элементаў.

Тут варта сказаць, што ў вас памылкі могуць і не з'явіцца ў браўзэры. У гэтым выпадку праверце, што ў вас уключаны вывад памылак PHP, а таксама пераканайцеся, што ў вас першы заход на старонку і ў адрасным радку няма даных формы.

Давайце выправім праблему. Для гэтага дадамо ўмову, у якой будзем правяраць тое, што форма была адпраўлена.

Напрыклад, можна правяраць $_GET на не пустату. Калі $_GET не пусты - то форма была адпраўлена і можна выконваць сумаванне. У адваротным выпадку ў нас яшчэ першы заход на старонку і сумаванне выканана не будзе. Такім чынам, вось выпраўлены код:

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

Спытайце ў карыстальніка прозвішча, імя і імя па бацьку. Пасля адпраўкі формы выведзіце на экран уведзеныя даныя.