概要
複数のsubmitから異なるターゲットに遷移するには、formタグでaction属性を設定せず、それぞれのinputでformacion属性を設定する。
一つのターゲットで異なるsubmitごとの処理を分けたいときは、それぞれのinputにname属性を設定し、PHP側のissetでそれぞれが定義されているかどうかによって処理を分けるとよい。
例
以下のHTMLでは3つのsubmit(送信1、送信2、その他の送信)を配置し、前者2つにはname属性の値として”submit1″、”submit2″を設定し、その他の送信にはname属性を設定していない。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>複数Submit</title> </head> <body> <h1>複数Submitのテスト</h1> <form method="post"> <input type="submit" name="submit1" value="送信1"> <input type="submit" name="submit2" value="送信2"> <input type="submit" value="その他の送信"> </form> <p><?= $message ?> </body> </html> |
以下はこれを受け取るPHPコードで、isset()
によって$_POST['submit1']
、$_POST['submit2']
が定義されていればそれぞれに対応した処理をし、それ以外の場合には「その他の送信」としている。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $message = '処理開始'; if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['submit1'])) { $message = '送信1が押されました'; } elseif (isset($_POST['submit2'])) { $message = '送信2が押されました'; } else { $message = 'その他のリクエスト'; } } ?> |
実行すると3つの送信ボタンが表示され、それぞれを押すとボタンに対応したメッセージが表示される。