フォームでクリックされたボタンに応じて別の処理を実行する

フォームに複数のボタンがある場合、押されたボタンごとに別の処理をしたいことがあります。

解決策として、ボタンの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」というエラーメッセージが表示されるようになります。

PHPの基礎が身に付いたかチェックするなら

PHP「直す力」養成ドリル
スポンサーリンク