概要
1つのフォームに複数のsubmitボタンを配置して、ボタンごとの処理を分ける方法
- $_POST変数で押されたボタンのname属性をキーとする連想配列が定義され、他のボタンは定義されない。
- isset($_POST[処理するボタンのname属性値])がtrueの場合にボタンに対応する処理を書く。
確認コード
コード概要
- 1つのFORMに3つのsubmitボタンを配置
- 押されたボタンのname属性をキーとする連想配列が定義され、押されなかったボタンの連想配列は定義されない
- 同じFORM内に配置されたINPUT要素は常に$_POSTに定義される
- クリア用のボタンはGETを送信
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?php $post = ''; $message = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') {   $post = $_POST;   if (isset($_POST['submit1'])) {     $message = '送信1が押されました';   }   if (isset($_POST['submit2'])) {     $message = '送信2が押されました';   } } ?> <!DOCTYPE html> <html lang="ja">   <head>     <meta charset="utf-8">     <title>post test</title>   </head>   <body>     <form method="post">       <input type="hidden" name="hidden" value="hidden_value">       <input type="submit" name="submit1" value="送信1">       <input type="submit" name="submit2" value="送信2">       <input type="submit" name="clear" value="クリア" formmethod="get">     </form>     <p><?= $message ?></p>     <pre><?= print_r($post,true) ?></pre>   </body> </html> | 
処理結果
開始直後:ボタンのみ表示される。
送信1ボタンを押したとき:
| 1 2 3 4 5 6 7 | 送信1が押されました Array (     [hidden] => hidden_value     [submit1] => 送信1 ) | 
送信2ボタンを押したとき:
| 1 2 3 4 5 6 7 | 送信2が押されました Array (     [hidden] => hidden_value     [submit2] => 送信2 ) | 
クリアボタンを押したとき:表示はクリアされる