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>

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

A 回答 (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は送られてないと思います。
    • good
    • 0

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



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

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

}

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

押されたボタンだけ、ポストで渡されますので、


if(!isNull($_POST["calculation"])
と言った形で判定できます。
    • good
    • 1

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

    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Q3Pや複数プレイについて(女性の方のみ)

僕の彼女がかなりの浮気性でそれもどうも複数プレイを楽しんでるセフレが何人かいるみたいです。女性はみんな複数プレイに興味があるのでしょうか?男性二人に攻められるのがそんなにきもちがいいのでしょうか?彼氏がいるいないにかかわらず。宜しくお願いします。

Aベストアンサー

女性すべてが複数プレイは興味ないと思いますよ。

ちなみに私は興味があってやったことがありますが、気持ちいいですね。
ただし、3Pが限度ですが^^;
あとは好きな人と知らない人との3Pはいやですね。
好きな人とか彼氏の前でほかの男に抱かれるのはいやです。
だからただのセックスを相談者様の彼女は楽しんでいるような気がします。
なんにせよ、彼女はあなたに複数プレイをばらしていることは少しどうかと思います。

Q【HTML(PHP?)】複数のフォームと複数の実行ボタン(submit

【HTML(PHP?)】複数のフォームと複数の実行ボタン(submit)の扱いについて

どのカテゴリで質問しようか迷いましたがこちらで・・・。

今回は画像を使用して質問します。
今回はHTML(PHP使用)に関しての質問なのですが、
図にあるように、※1をクリックすると、その次のページにA,Bの情報がPOSTで次のページに送信されるようにしています。
ここで、※2にも同じように、A,Bの情報をPOSTで次のページに送信したいのですが、
何故かPOSTで送信されないみたいなのです。
どうにかして※2も※1と同じようにPOSTを送信したいのです。

別の質問サイトで、「押されたsubmitがどれかによって処理を分岐させる」と回答が帰ってきたのですが、javascript無しのPHPだけで以上のことができるのでしょうか?

なお、HTMLのFORMタグは入れ子にしていませんし、
POST受け取り先の.phpも問題はありません。

以下、HTMLのform、input部分のソース
※1のフォームタグ内容
<form action="search.php" method="post" name ="search">
※1ボタンの内容
<input type="submit" name="searching" value="再検索">
※2のフォームタグ内容
<form action="result.php" method="post" name ="res">
※2ボタンの内容
<input type="submit" name="result" value="結果表示">

まとめとして、
押されたsubmitがどれかによって処理を分岐させる方法を、
javascriptではなく、PHPのみで実装させたいのです。
どうかよろしくお願いします。

【HTML(PHP?)】複数のフォームと複数の実行ボタン(submit)の扱いについて

どのカテゴリで質問しようか迷いましたがこちらで・・・。

今回は画像を使用して質問します。
今回はHTML(PHP使用)に関しての質問なのですが、
図にあるように、※1をクリックすると、その次のページにA,Bの情報がPOSTで次のページに送信されるようにしています。
ここで、※2にも同じように、A,Bの情報をPOSTで次のページに送信したいのですが、
何故かPOSTで送信されないみたいなのです。
どうにかして※2も※1と同じようにPOSTを...続きを読む

Aベストアンサー

> 押されたsubmitがどれかによって処理を分岐させる方法を、

これのみであれば、要は ↓ みたいな事でしょうか?

<?
print_r($_POST);

$me = $_SERVER[PHP_SELF];

print "
<form action=$me method=post>
<input type=text name=a value='え~'>
<input type=text name=b value='びー'>
<input type=submit name=SubmitA value='再検索'>
<input type=submit name=SubmitB value='結果表示'>
</form>";

if ($_POST[SubmitA]) {
print "サーチ分岐";
//include "search.php";
} elseif ($_POST[SubmitB]) {
print "リザルト分岐";
//include "result.php";
}
?>

> 押されたsubmitがどれかによって処理を分岐させる方法を、

これのみであれば、要は ↓ みたいな事でしょうか?

<?
print_r($_POST);

$me = $_SERVER[PHP_SELF];

print "
<form action=$me method=post>
<input type=text name=a value='え~'>
<input type=text name=b value='びー'>
<input type=submit name=SubmitA value='再検索'>
<input type=submit name=SubmitB value='結果表示'>
</form>";

if ($_POST[SubmitA]) {
print "サーチ分岐";
//include "search.php";
} elseif ($_...続きを読む

Q複数プレイ

33歳、独身、OLです。

私は性欲が強い方で、今は特定の男性がいませんので、性欲を解消するのに苦労しています。基本的にはオナニーが中心です。

オナニーをする時はいつも変態的なことを妄想するのですが、最近は、複数の男性に犯されることを想像したり、ネットでそういう動画を見ながらしています。
妄想だけならよいのですが、実際にそういうプレイにあこがれてしまいます。
実は学生時代に男性2人とプレイしたことがあります。そのことを思いながらオナニーすることもたびたびあります。

ネットで見ると、そういう希望の女性が参加するサイトもあるようです。私のような希望を持っている女性もいることに少し安心しましたが、そういうサイトで経験したいとも思うようになりました。

そこで、複数プレイの希望を持っている女性の方、複数プレイを経験をされた方、実際にそのようなサイトで経験された方など、アドバイスがありましたらお願いします。

Aベストアンサー

私も同じような経験を何回か経てきました。でもいざ特定の彼氏が出来た時に、やっぱり複数Pの経験が思い出されて忘れることが出来なくて結局は彼氏が居るのに元彼とその友達と飲みに行っては、複数Pを楽しむ事が多くて。本当は本命君を交えて複数Pをしたいのです。私は単にHが本当に好きで。小学校の時からHな事を考えたり。Tバック穿いて露出したりしてきましたから、相当なんだと思う。友達も乱交仲間が居て、やっぱり気持ちよいものは気持ち良いので、我慢出来ない!と言うのが結論です。浮気と言う感覚では無くて、その時だけ本気!そんな感じで、でも理解してくれる彼氏ってなかなかいない・・・。

Q【HTML(PHP?)】複数のフォームと複数の実行ボタン(submit

【HTML(PHP?)】複数のフォームと複数の実行ボタン(submit)の扱いについて

【お詫び】
やたらと重く、送信ボタンを何度も押してしまい、同じ質問を何度も投稿した形になってしまい、大変申し訳ございませんでした。
それらの質問は全て削除させていただきました。


どのカテゴリで質問しようか迷いましたがこちらで・・・。

今回は画像を使用して質問します。
今回はHTML(PHP使用)に関しての質問なのですが、
図にあるように、※1をクリックすると、その次のページにA,Bの情報がPOSTで次のページに送信されるようにしています。
ここで、※2にも同じように、A,Bの情報をPOSTで次のページに送信したいのですが、
何故かPOSTで送信されないみたいなのです。
どうにかして※2も※1と同じようにPOSTを送信したいのです。

別の質問サイトで、「押されたsubmitがどれかによって処理を分岐させる」と回答が帰ってきたのですが、javascript無しのPHPだけで以上のことができるのでしょうか?

なお、HTMLのFORMタグは入れ子にしていませんし、
POST受け取り先の.phpも問題はありません。

以下、HTMLのform、input部分のソース
※1のフォームタグ内容
<form action="search.php" method="post" name ="search">
※1ボタンの内容
<input type="submit" name="searching" value="再検索">
※2のフォームタグ内容
<form action="result.php" method="post" name ="res">
※2ボタンの内容
<input type="submit" name="result" value="結果表示">

まとめとして、
押されたsubmitがどれかによって処理を分岐させる方法を、
javascriptではなく、PHPのみで実装させたいのです。
どうかよろしくお願いします。

【HTML(PHP?)】複数のフォームと複数の実行ボタン(submit)の扱いについて

【お詫び】
やたらと重く、送信ボタンを何度も押してしまい、同じ質問を何度も投稿した形になってしまい、大変申し訳ございませんでした。
それらの質問は全て削除させていただきました。


どのカテゴリで質問しようか迷いましたがこちらで・・・。

今回は画像を使用して質問します。
今回はHTML(PHP使用)に関しての質問なのですが、
図にあるように、※1をクリックすると、その次のページにA,Bの情報がPOSTで次のページに送...続きを読む

Aベストアンサー

「2つのPHPファイルに分岐させる」のだと、
そのままでは、JavaScriptなどを使ってクライアントサイドで処理しないと無理ですが
両方を処理する「1つのPHPファイル」を作れば、PHPだけで実現可能です。

<form action="searchresult.php" method="post" name ="search">
※「A,Bの情報」など入力部
<input type="submit" name="searching" value="再検索">
<input type="submit" name="result" value="結果表示">
</form>

といった感じで、一つのform内に、複数のsubmitボタンを配置すると、
・[再検索]をクリックすると、パラメータ「searching」が設定される
・[結果表示]をクリックすると、パラメータ「result」が設定される
という形で、どちらのボタンをクリックしたのかが区別ができますので、
searchresult.php 内で、
if (isset($_POST[searching])) {
    search.php の処理
} else if (isset($_POST[result])) {
    result.php の処理
}
といったコードを記述すれば、クリックしたボタンによってPHPの処理を変えられます。

「2つのPHPファイルに分岐させる」のだと、
そのままでは、JavaScriptなどを使ってクライアントサイドで処理しないと無理ですが
両方を処理する「1つのPHPファイル」を作れば、PHPだけで実現可能です。

<form action="searchresult.php" method="post" name ="search">
※「A,Bの情報」など入力部
<input type="submit" name="searching" value="再検索">
<input type="submit" name="result" value="結果表示">
</form>

といった感じで、一つのform内に、複数のsubmitボタンを配置すると、
・[再検索...続きを読む

Q1枚で複数人プレイ出来るNDSソフト(RPG限定)?

ニンテンドーDSの下記ソフトは1枚で4人通信プレイ出来るのでしょうか?
■ドラゴンクエストIX 星空の守り人
■ファンタシースター ZERO
調べても出てこないので多分無理だとは思うのですが、知ってる方いらっしゃれば教えて頂けると助かります。

あと、1枚で複数人プレイ出来るソフトは何かありますか?
RPG限定でお願いします。

Aベストアンサー

PS0もドラクエIXも、オンライン、オフラインに関わらず、人数分のDSとソフトがそれぞれ必要です。
ソフト1枚で複数人プレイができるゲームは、桃鉄などに限られていて、RPGにはないはずです。

Q【PHP&JavaScript】複数の別ウィンドウ(phpファイル)へsubmitさせたい

PHP、JavaScript、共に初心者なので、的を得ていない質問かもしれませんが、是非ともご教授お願い致します。

やりたいこととしては以下の内容で、複数ではなく、1つの別ウィンドウしか表示されずに困っております。
(1)元のウィンドウで、入力や選択を行った後、結果ボタンを押し、"その都度"別ウィンドウを
 表示させる。(つまり複数別ウィンドウを表示させたい)
 (元のページはそのまま残す)
(2)元ウィンドウの入力値をPOSTデータとして、別ウィンドウに受け渡す。
(3)別ウィンドウでも、常に同一のロジックを必要とするため、都度開く別ウィンドウを同一PHPファイルとしたい。

上記で使用しているソース(主要な部分抜粋)は以下の通りです。
【元ウィンドウ】
<script type="text/javascript">
<!--
function newsubmit() {
window.open("about:blank", "kekka", "WindowStyle");
mainform=top.window.document.motoform;
mainform.action = "kekka.php";
mainform.target = "kekka";
mainform.submit();
}
// -->
</script>

<form name="motoform" method="POST" action="<?= $_SERVER['PHP_SELF'] ?>">
・・・
<input type="button" value="結果" name="kekka" onClick="newsubmit();">
・・・
<select name="no" onchange="this.options[this.selectedIndex].value">
<option value="100">100</option>
<option value="200">200</option>
<option value="300" selected>300</option>
<option value="400">400</option>
<option value="500">500</option>
</select>
・・・
</form>

【別ウィンドウ(kekka.php)】
<form name="subform" method="POST" action="<?= $_SERVER['PHP_SELF'] ?>">
・・・
<?php
print "no: " .$_POST['no']. "<br>\n";
?>
・・・
</form>

POSTデータの受渡しは、出来ています。
別ウィンドウのURLを、001.html、002.html、003.html・・・のように、別々のHTMLにしようとも考えましたが、
それぞれの別ウィンドウでどうしてもPHPの同一ロジックを入れたいため、同一のkekka.phpとしています。
それ故に、既に同じウィンドウ(kekka.php)が表示されているので、別ウィンドウが上書きされてしまい、
1つの別ウィンドウしか表示されません。

同じPHPを使用して、複数、別ウィンドウを表示させる方法、もしくは、別案などございましたら、
ご教授願えますでしょうか。お願い致します。

PHP、JavaScript、共に初心者なので、的を得ていない質問かもしれませんが、是非ともご教授お願い致します。

やりたいこととしては以下の内容で、複数ではなく、1つの別ウィンドウしか表示されずに困っております。
(1)元のウィンドウで、入力や選択を行った後、結果ボタンを押し、"その都度"別ウィンドウを
 表示させる。(つまり複数別ウィンドウを表示させたい)
 (元のページはそのまま残す)
(2)元ウィンドウの入力値をPOSTデータとして、別ウィンドウに受け渡す。
(3)別ウィンドウでも、常に同...続きを読む

Aベストアンサー

submitする際にIDとか連番とか何かユニークになる値をjavascriptに渡してやって、
>window.open("about:blank", "kekka", "WindowStyle");
の"kekka"というwindow名の部分をphpから受け取った値にしてやればいけるのではないでしょうか。
多分現状は固定のwindow名(kekka)になっているから上書きされてしまうんだと思います。

QiTUNESで複数のプレイリストをCDに焼きたいです

こんばんは。自力で方法を探してましたが一時あきらめたのですがどうしてもあきらめきれなくこの場を借りて質問させていただきます。

僕は主にカーステレオでCDを聴きます。
カーステはmp3対応なのでiTUNESを利用してデータ形式で焼き聴いています。
iTUNESが便利なのは焼くときにファイル名に曲番号を自動で振ってくれるところです。
カーステではmp3ファイルを再生するとき、必ず名前の順になってしまうので。(これが作成日時順で再生できれば最高なんですがあいにくできません。)

ただ、iTUNESの場合、一つのプレイリストのみしか焼けませんよね?

僕は複数のプレイリストを選択してそれをCDRに焼きたいです。

例えば以下の2つのプレイリストがあります。
abc
def

2つのプレイリストにはそれぞれ10曲ずつ入ってるとします。

その2つのプレイリストを選択してCDRに焼く。
焼いたCDRの中身は
abc
def
のプレイリスト名で2つのフォルダが出来上がっていてそれぞれを開くと曲順がファイル名の先頭に01~10までが追加されている。

これができればすごいうれしいです。
一言でゆえばCDR1枚でアルバム5枚ぶん程度の内容がつめられる。ってことになります。

どなたかiTUNESを利用してできる方法、もしくはiTUNES以外でこのようなことが出来るソフトを知っている方がいましたら教えてください。
よろしくお願いいたします。

OSはWINDOWS XP SP2 です。

こんばんは。自力で方法を探してましたが一時あきらめたのですがどうしてもあきらめきれなくこの場を借りて質問させていただきます。

僕は主にカーステレオでCDを聴きます。
カーステはmp3対応なのでiTUNESを利用してデータ形式で焼き聴いています。
iTUNESが便利なのは焼くときにファイル名に曲番号を自動で振ってくれるところです。
カーステではmp3ファイルを再生するとき、必ず名前の順になってしまうので。(これが作成日時順で再生できれば最高なんですがあいにくできません。)

ただ、iTUNESの場...続きを読む

Aベストアンサー

なるほど、iTunesが出てきたので誤解しましたね。
iTunesはWAVでしか書いていないはずですから。

結局、要望は、フォルダごとに、指定した順序にファイル名の
先頭に連番を付けたい、ということですね。しかも、コピーで、
という条件ですね。

残念ながら、そのようなソフトは見たことも聞いたこともあり
ません。ライティングソフトにそのような機能を求めるべきか
どうかも判断が難しいですね。
自分の要望だったら、プログラムを作りますけど。半日くらいかな。
かなり特殊なので一般には出ないかもしれませんね。

そんなプログラムが出るまでは、mp3をコピーして、コピー先で
手でファイル名変更するしかないでしょう。

Qsubmitボタン無しでページ(~.php)が読み込まれるだけでactionが実行されるやり方を探しています

ちょっと忘れてしまった方法を教えていただきたいです。

通常は<form action "aaa.php">でフォーム送信処理等を行うかと思いますが、submitボタン無しで~.phpページが読まれるだけで
~.phpページ内のPOSTアクションがかかる方法が(おそらくpearで)あったと思います。

その方法を教えてください。

Aベストアンサー

HTTP_Request ですか?
http://pear.php.net/manual/ja/package.http.http-request.php

QiTunes で複数のプレイリストを扱うとチェックが同期してしまう。

MacMini(OS10.3.9) + iTunes (MAC OSX版 6.0.1) + iPod nano + iPod 10G(M8737J/A)の環境です。

以前から使っているiPod10Gに、最近nanoを買い足しました。
10gとnanoという2つのプレイリストを作って、それぞれのiPodへ同期して転送していました。
しかし、同じ曲が両方のプレイリストに含まれている場合、10gの方でチェックを外すと、nanoのチェックも外れてしまいます。片方だけチェックする事ができません。

不要な場合は曲を削除するしかないのでしょうか?
チェックの使い方が悪いのかもしれません。

よろしくお願いします。

Aベストアンサー

> チェックマークがプレイリスト毎に管理されていれば便利だなーと思って聞いてみましたが、やっぱりそこまでは出来ないみたいですね。

どうしてもとおっしゃるのなら、ライブラリ上で曲をコピーしてふたつにしてください。
ライブラリでコピーしたい曲を選択し、詳細設定メニューの「選択項目をxxxに変換」を実行すると、コピーされます。
プレイリストに別のものを入れると、チェックボックスも別に操作できるようになります。

Qphpexcelにてsubmitボタンを押下するとデータがexcelに出力されるには?

phpexcelをダウンロードして使用しています。以下がphpexcelにてexcelのデータを出力させる方法と認識しておりますがどうやってsubmitボタンを押下した際にこのコマンドが実行されるのかが分かりません。初心者で申し訳ございませんが、ご教示頂けますようお願い致します。

$book = new PHPExcel();

//シートを設定する
$book->setActiveSheetIndex(0);//一番最初のシートを選択
$sheet = $book->getActiveSheet();//選択シートにアクセスを開始
$sheet->setTitle('sheet1'); //シート名を設定する
// テーブルヘッダを書き込む
// テーブルヘッダを書き込む
$sheet->setCellValue('A1', '製造日');
$sheet->setCellValue('B1', '賞味期限');
$sheet->setCellValue('C1', '商品');
$sheet->setCellValue('D1', '個数');

$row = 2;
foreach ($result as $item) {
$sheet->setCellValue("A$row", $item['seizoubi']);
$sheet->setCellValue("B$row", $item['syoumi']);
$sheet->setCellValue("C$row", $item['syouhin']);
$sheet->setCellValue("D$row", $item['kosu']);

$row++;
}

//Excel2007形式で出力する準備
//「vnd.ms-excel」だとブラウザによってはそのまま開いたりするのでこの方が良いかと
header('Content-Type: application/octet-stream');
//ダウンロードするファイル名を設定
header('Content-Disposition: attachment;filename="test.xls"');

$writer = PHPExcel_IOFactory::createWriter($book, "Excel5");//EXCEL2007形式
$writer->save('php://output');//出力開始

phpexcelをダウンロードして使用しています。以下がphpexcelにてexcelのデータを出力させる方法と認識しておりますがどうやってsubmitボタンを押下した際にこのコマンドが実行されるのかが分かりません。初心者で申し訳ございませんが、ご教示頂けますようお願い致します。

$book = new PHPExcel();

//シートを設定する
$book->setActiveSheetIndex(0);//一番最初のシートを選択
$sheet = $book->getActiveSheet();//選択シートにアクセスを開始
$sheet->setTitle('sheet1'); //シート名を設定する...続きを読む

Aベストアンサー

>submitボタンを押下した際にこのコマンドが実行される

<input type="submit" name="x" value="出力">
のように、submitするときにパラメータを渡し、
if($_REQUEST["x"]!==""){ //厳密には"出力"という文字と合致させた方がよい
実行文
}
のようにすればよいのでは?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング