Обработка формы в одном файле PHP
В предыдущем уроке наша форма была размещена на одной странице, а отправлялась на другую. На самом деле это не обязательно. Если оставить атрибут action пустым или убрать его совсем, то форма будет отправляться на эту же страницу.
Как это будет работать: при первом заходе на страницу мы заполним форму данными и нажмем на кнопку. После этого страница обновится и ее код выполнится снова, но уже с данными формы.
Давайте посмотрим на примере. Пусть у нас в одном файле есть форма и ее обработка:
При первом заходе на страницу функция var_dump выведет пустой массив. А после отправки формы он выведет уже данные формы. То есть первый раз $_GET будет пуст, а второй раз — будет содержать данные формы.
Это может привести к проблемам. Пусть, к примеру, мы в форму будем вводить числа и хотим вывести сумму этих чисел на экран:
В этом случае при первом заходе на страницу мы увидим ошибки PHP, связанные с тем, что массив $_GET пуст, а мы обращаемся к его элементам.
Здесь следует сказать, что у вас ошибки могут и не появится в браузере. В этом случае пров проверьте, что у вас включен вывод ошибок PHP, а также убедитесь, что у вас первый заход на страницу и в адресной строке нет данных формы.
Давайте исправим проблему. Для этого добавим условие, в котором будем проверять то, что форма была отправлена.
Например, можно проверять $_GET на не пустоту. Если $_GET не пустой — то форма была отправлена и можно выполнять суммирование. В противном случае у нас еще первый заход на страницу и суммирование выполнено не будет. Итак, вот исправленный код:
Спросите у пользователя фамилию, имя и отчество. После отправки формы выведите на экран введенные данные.
php form action php self
Also, you can omit the action attribute and it will work as expected.
Solution 2
You can leave action blank or use this code:
Solution 3
Leaving the action value blank will cause the form to post back to itself.
Solution 4
You can use an echo shortcut also instead of typing out «echo blah;» as shown below:
Solution 5
This is Perfect. try this one 🙂
Related videos on Youtube
Sasindu H
Updated on January 11, 2021
Comments
In form action I want to use page name with parameters. like house.php?p_id=10111 . But $_SERVER[‘PHP_SELF’] gives only the house.php (My page full url is house.php?p_id=10111 like this) Please help me to solve this problem. thanks.
mixing post and get parameters is poor practice. if you’re posting, then use hidden form fields to pass through any ‘get’-type values.
@jBaron Yes, that’s the case in HTML5, but you can omit the empty action=»» attribute altogether. It will validate and work as expected.
@Shef It is bad practice to use post method for same page. Browser will always alert when one refresh the page.
@Avnishalok The browser will always alert whenever someone refreshes the page after a submit. It doesn’t matter if the submission is on a different page or the same page.