質問

PHPのsubmitボタンが複数ある場合

PHPにて会計システムを開発しているのですが、計算ボタンと、更新してDBに追加するためのボタンとが混在している場合、
$_POST等で押されたボタンの処理を分けることは可能なのでしょうか?下の例は、
name="calculation"が押された場合は、val1とval2の値を計算し、totalへ値を入れます。
name="update"が押された場合は、それぞれのフォームの値をDBに更新をかけます。
<?php

<form action="****.php" method="POST">
<input type="text" name="val1" value="20"/>
<input type="text" name="val2" value="30"/>
<input type="text" name="total" value="50"/>
<input type="submit" name="calculation"/>
<input type="submit" name="update"/>
</form>

?>
お分かりになる方、ご教授お願いいたします。

通報する

回答 (4件)

<input type="submit" name="calculation" value="calculation"/>
<input type="submit" name="update" value="update" />

それぞれにvalueを入れておくと
$_POST['calculation']、$_POST['update']のどちらかに、押されたボタンのvalueが入ります。

<input type="text">などでエンターキー/リターンキーを押しても、フォームを送信出来るブラウザが多いですが、
その時はsubmitボタンは押してないので、
$_POST['calculation']、$_POST['update']の両方がnullになります。
そのときは「どちらのボタンも押されていない」という判断が出来ます。

JavaScriptのform.submit()で送信しても、<input type="submit">のnameとvalueは送られてないと思います。

if ($_SERVER["REQUEST_METHOD"]=="POST"){ //ポストで飛ばされてきたら以下を処理

if($_POST["calculation"]){
処理内容
}

if($_POST["update"]){
処理内容
}

}

ボタンにより処理を分岐させます。
type="submit"にvalueを設定しないと上記のプログラムは、正常に動作しません。
セキュリティー処理は、省略しております。

押されたボタンだけ、ポストで渡されますので、
if(!isNull($_POST["calculation"])
と言った形で判定できます。

submitにもvalueを設定しているとvalueが送られるよ

このQ&Aは役に立ちましたか?7 件

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

新しく質問する

注目の記事


新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ

べんりQ&A特集