Апрацоўка формы ў адным файле PHP
У папярэднім уроку наша форма была размешчана
на адной старонцы, а адпраўлялася на другую.
На самай справе гэта не абавязкова. Калі пакінуць
атрыбут action
пустым або ўбраць яго
наогул, то форма будзе адпраўляцца на гэтую
жа старонку.
Як гэта будзе працаваць: пры першым заходзе на старонку мы запоўнім форму данымі і націснем на кнопку. Пасля гэтага старонка абновіцца і яе код выканаецца зноў, але ўжо з данымі формы.
Давайце паглядзім на прыкладзе. Хай у нас у адным файле ёсць форма і яе апрацоўка:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
Пры першым заходзе на старонку функцыя var_dump
вывядзе пусты масіў. А пасля адпраўкі формы
ён вывядзе ўжо даныя формы. Гэта значыць першы
раз $_GET
будзе пусты, а другі раз
- будзе ўтрымліваць даныя формы.
Гэта можа прывесці да праблем. Хай, да прыкладу, мы ў форму будзем уводзіць лікі і хочам вывесці суму гэтых лікаў на экран:
<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
не пусты -
то форма была адпраўлена і можна выконваць
сумаванне. У адваротным выпадку ў нас яшчэ
першы заход на старонку і сумаванне выканана
не будзе. Такім чынам, вось выпраўлены код:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Спытайце ў карыстальніка прозвішча, імя і імя па бацьку. Пасля адпраўкі формы выведзіце на экран уведзеныя даныя.