プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、1つのフォーム内に複数のsubmitボタンを配置して、submitボタン毎に動作を変える
結論から書くと、押されたsubmitボタンのname属性がサーバ側に渡るので、
$_POSTや$_GET内の存在チェックをすることで、押されたsubmitボタンを判定できます。
あとは、押されたsubmitボタンによって処理内容を変えればOKです。

言葉にすると、分かりにくいですね。
取りあえず、サンプルを見てくださいφ(--)

■test01.php
<?php

$msg = "";

if(isset($_POST['submit1'])){
    $msg = "「ボタン1」が押されたよ<br>";
}elseif(isset($_POST['submit2'])){
    $msg = "「ボタン2」が押されたよ<br>";
}
?>

<html>
<head></head>
<body>

<?php echo $msg; ?><br><br>

<form method="POST" action="./test01.php">
    <input type="submit" name="submit1" value="ボタン1">
    <input type="submit" name="submit2" value="ボタン2">
</form>

</body>
</html>

下半分がHTML部分です。
name属性に「submit1」を設定した「ボタン1」と
name属性に「submit2」を設定した「ボタン2」のみのフォームがあります。
フォームはPOSTで送信するようになっています。

<form method="POST" action="./test01.php">
    <input type="submit" name="submit1" value="ボタン1">
    <input type="submit" name="submit2" value="ボタン2">
</form>

の部分ですね。

上半分がPHP側の処理部分です。
ポイントは

if(isset($_POST['submit1'])){



}elseif(isset($_POST['submit2'])){

の部分です。

「ボタン1」が押された場合、$_POST['submit1']に値が設定されています。
「ボタン2」が押された場合、$_POST['submit2']に値が設定されています。

「isset()」を使って$_POST['submit1']と$_POST['submit2']の存在チェックを行うことで、
押されたsubmitボタンを判断できる理屈です。

あとは、submitボタンが押された際の処理を、それぞれ実装してください。
それで、押されたsubmitボタンによって動作を変えることができます。

なお、今回のサンプルはPOSTで書きましたが、GETでもできます。
こんなんでも、動きますよφ(--)

■test02.php
<?php

$msg = "";

if(isset($_GET['submit1'])){
    $msg = "「ボタン1」が押されたよ<br>";
}elseif(isset($_GET['submit2'])){
    $msg = "「ボタン2」が押されたよ<br>";
}
?>

<html>
<head></head>
<body>

<?php echo $msg; ?><br><br>

<form method="GET" action="./test02.php">
    <input type="submit" name="submit1" value="ボタン1">
    <input type="submit" name="submit2" value="ボタン2">
</form>

</body>
</html>

そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事