В предыдущем уроке наша форма была размещена
на одной странице, а отправлялась на другую.
На самом деле это не обязательно. Если оставить
атрибут 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'];
}
?>
Спросите у пользователя фамилию, имя и отчество. После отправки формы выведите на экран введенные данные.