【php】submitボタンが複数ある場合にどれが押されたかを判定する方法

そんな状況になっている時点で作りに問題ありそうですが、今回はformタグの中にsubmitボタンが二つあり、javascriptも使用しない場合にどのsubmitボタンが押されたか?を判定する方法を紹介します。

サンプルソースと説明

HTMLとphpのソースについて説明します。

HTML

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>サンプルソース</title>
</head>
<body>

<form action="test.php" method="post">
<p><input type="submit" name="A" value="Aボタン"></p>
<p><input type="submit" name="B" value="Bボタン"></p>
<p><input type="submit" name="C" value="Cボタン"></p>
</form>

</body>
</html>

一つのformタグの中に三つのsubmitボタンがある状態です。

action属性には自分自身のファイル名を指定しています。

php

if( isset($_POST["A"]) ){
	// ここに「Aボタン」が押されたときの処理を書く
	echo '押されたのは' . $_POST["A"] . 'です。';
}else if( isset($_POST["B"]) ){
	// ここに「Bボタン」が押されたときの処理を書く
	echo '押されたのは' . $_POST["B"] . 'です。';
}else if( isset($_POST["C"]) ){
	// ここに「Cボタン」が押されたときの処理を書く
	echo '押されたのは' . $_POST["C"] . 'です。';
}

実際に押されたsubmitボタン以外はpost送信されないので、isset()で存在の確認をすることで押されたボタンごとの出し分けができます。

動作確認ページとソース

動作確認用のページと、ソースを用意しました。

動作確認用ページ

*****確認用URL*****

ソース

<?php
	if( isset($_POST["A"]) ){
		// ここに「Aボタン」が押されたときの処理を書く
		echo '押されたのは' . $_POST["A"] . 'です。';
	}else if( isset($_POST["B"]) ){
		// ここに「Bボタン」が押されたときの処理を書く
		echo '押されたのは' . $_POST["B"] . 'です。';
	}else if( isset($_POST["C"]) ){
		// ここに「Cボタン」が押されたときの処理を書く
		echo '押されたのは' . $_POST["C"] . 'です。';
	}
?>

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>サンプルソース</title>
</head>
<body>

<form action="test.php" method="post">
<p><input type="submit" name="A" value="Aボタン"></p>
<p><input type="submit" name="B" value="Bボタン"></p>
<p><input type="submit" name="C" value="Cボタン"></p>
</form>

</body>
</html>

ファイル名を「test.php」にして、このソースを張り付ければphpが動作する環境で確認出来るはず。

コメント