Обработка на форма в един файл 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'];
}
?>
Попитайте потребителя за фамилия, име и презиме. След изпращане на формата изведете на екрана въведените данни.