フォームに複数のボタンがある場合、押されたボタンごとに別の処理をしたいことがあります。
解決策として、ボタンのvalue属性の値に応じて処理を切り替える方法があります。
たとえば、sub1という名前のボタンのvalue属性「$_POST[“sub1”]」によって処理を分岐するswitch文を記述すれば解決です。以下に例を示します。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>クリックされたボタンに応じて処理を分岐する</title> </head> <body> <?php if (isset($_POST["sub1"])) { $kbn = htmlspecialchars($_POST["sub1"], ENT_QUOTES, "UTF-8"); switch ($kbn) { case "登録する": echo "登録処理"; break; case "変更する": echo "変更処理"; break; case "削除する": echo "削除処理"; break; default: echo "エラー"; exit; } } ?> <form method="POST" action=""> <input type="submit" value="登録する" name="sub1"> <input type="submit" value="変更する" name="sub1"> <input type="submit" value="削除する" name="sub1"> </form> </body> </html>
フォーム処理を記述するときは、初回実行時のことを考えておく必要があります。初回はフォームに入力、選択された値はないので、「$_POST[“……”]に値が入っていたら…」のような、フォーム処理を省略する条件を作成します。これを記述しないと、初回実行時に「Notice: Undefined index: sub1」というエラーメッセージが表示されるようになります。