Две и более кнопки submit в форме HTML. Обработка на PHP.
Случилась тут небольшая задачка, как обработать две и более кнопок submit в HTML-форме, причем желательно без помощи JS и иных ухищрений, т.е. есть, например, такая форма:
Надо выяснить (на сервере), какую кнопку нажал пользователь.
На самом деле (ну если никто не поизвращался над браузером, т.е. клиентом) в отправленном серверу запросе
POST
будут только параметры нажатой кнопки. Если задать каждой кнопке уникальное имя, то можно будет отследить, какая кнопка была нажата, и, соответственно, обработать это.Создадим тестовую форму
multibutton.html
:<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<title>Multibutton 'Send' Test</title>
</head>
<body>
<center>
<form action='multibutton.go.php' method='POST'>
<b>Press a button</b></br>
<input type='text' name='testtext' value='Test Text'></br>
<input type='submit' name='button1' value='Button #1'>
<input type='submit' name='button2' value='Button #2'>
<input type='submit' name='button3' value='Button #3'>
</form>
</center>
</body>
</html>
На PasteBin
И напишем скрипт-обработчик
multibutton.go.php
:<?php
$buttonmessage="<center><b>Perssed button:</br>#";
//Проверка кнопок
if (isset($_POST['button1']))
{
$buttonmessage.="1";
}
if (isset($_POST['button2']))
{
$buttonmessage.="2";
}
if (isset($_POST['button3']))
{
$buttonmessage.="3";
}
echo $buttonmessage."</br>";
echo "Test text value: '".$_POST['testtext']."'</b></br></br>";
echo "<b>----- Output $_POST array: ----</b></br><code><pre>";
print_r ($_POST); echo "</br></pre></code>";
echo "<b>-------------------------------</b></center>";
?>
Если в массиве
$_POST
будет найден элемент button1
- обрабатываем нажатие кнопки #1 (if (isset($_POST['button1']))
), аналогично поступаем с другими кнопками. Текстовое поле - исключительно для теста, можно вписывать любое значение, оно будет показано пользователю.Для наглядности выводится содержимое массива
$_POST
:print_r ($_POST);
Код на PasteBin
Получим следующее:
Нажата кнопка #1:
Нажата кнопка #2:
Нажата кнопка #3:
Можно объединить создание формы и вывод результата в единый скрипт: см. код на PasteBin
Две и более submit кнопки в форме
Скачать пример
Это репост заметки из моего блога на сайте http://tolik-punkoff.com
Оригинал заметки находится здесь: http://tolik-punkoff.com/2017/05/02/dve-i-b