概要
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 ) |
クリアボタンを押したとき:表示はクリアされる