Две и более кнопки 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 кнопки в форме

Скачать пример

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *