#php #html #forms
#php #HTML #формы
Вопрос:
У меня есть html-форма и php-файл в качестве ее действия. Когда я нажимаю кнопку отправки, он запускает php-код, но также загружает пустую страницу, и URL-адрес изменяется.
Как я могу просто запустить код и остаться на той же HTML-странице?
Комментарии:
1. Просто используйте ajax, пожалуйста (есть много в учебнике / ссылке на это, если вы Google)
2. Поместите свою форму и php-код на одну страницу, отправьте на эту страницу
3. перейдите по этой ссылке, чтобы легко выполнить руководство w3schools.com/xml/ajax_php.asp
Ответ №1:
Похоже, вам может потребоваться выйти за рамки парадигмы «одна страница = один скрипт». Теперь существует несколько возможных подходов к «не покиданию страницы», таких как:
- Включите код обработки формы в саму страницу формы. Плюсы: Действительно простой и элементарный. Минусы: код не может быть повторно использован.
- Отправьте форму с помощью javascript (AJAX / Fetch). Плюсы: «Современный» и элегантный, когда все сделано правильно. Минусы: относительно сложно. Требуется как PHP, так и Javascript.
- Самый простой «элегантный» подход: отделите свою логику обработки форм и включите / вызовите со страницы при отправке формы. Базовый пример:
<?php /* form.php */
if(!empty($_POST)) { // if form was submitted ("post")
include 'form_processor.php';
$result = process_form($_POST);
echo 'Form Process Result: ' . $result;
}
?>
<form action="form.php" method="post">
... your HTML form here ...
</form>
<?php /* form_processor.php */
function process_form($post, $args = []) {
$errors = [];
// do stuff with the post data: validate, store, etc.
if(count($errors) > 0) {
$result = 'Errors: ' . implode(', ', $errors);
} else {
$result = 'Okay';
}
return $result;
}
Вам нужно будет подумать о создании процессора форм, который можно использовать повторно в нескольких контекстах, например, путем передачи аргументов, которые определяют проверку и обработку данных в зависимости от конкретного случая. Возможно, превратить его в класс или, по крайней мере, в несколько функций с четким разделением задач (проверка, хранение, отправка электронной почты и т. Д.). Вышеизложенное должно дать вам базовый путь вперед.