プロが教える店舗&オフィスのセキュリティ対策術

【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?)】複数のフォームと」の質問画像
gooドクター

A 回答 (4件)

> 押された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";
}
?>
    • good
    • 1
この回答へのお礼

ありがとうございました。
多少ゴリ押しながら、満足できる結果が返ってきました。

本当にありがとうございます。

お礼日時:2010/02/09 12:20

#3です。



画面を見る限り違うと思いますし、
かなり昔の事なもんで記憶が曖昧ですが、
一部の携帯電話では「一つのformには一つのsubmitしか存在してはいけない」みたいのがあって、
それで、ややこしい事になった事がありました。

今のPCのブラウザであれば、一つのformの中にsubmitが複数あっても大丈夫なはずです。
    • good
    • 0

#1の人のに補足して


inputタグのtype="hidden"を利用して隠しフィールドを使って
AとBが変更されたときに隠しフィールドに値をいれるJavaScriptを用意すればいいだけです。さほど難しい処理ではありません。

formは入れ子処理ができないのでこうするしか処理方法が内でしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。
javascriptを利用したページ作成の際には参考にさせていただきます。

お礼日時:2010/02/09 13:22

別フォームにしている時点でjavascript抜きでは無理。



同じフォームに入れればsubmitにつけたnameが送り先にわたります。
別フォームが前提ならjavascriptで処理してください。

この回答への補足

大変遅くなりましたが、

フォームは
<form action="searchresult.php" method="post" name ="searchres">
というフォームに変更し、ひとつだけにしました。
また、そのひとつのフォームにあの2つのsubmitを入れてあります。

補足日時:2010/02/09 11:30
    • good
    • 0
この回答へのお礼

一応javascript無しでどうにかなりました。

現時点ではjavascriptを使わなかったのですが、
javascriptが絡むページ作成で困ったことがあったらよろしくお願いします。

お礼日時:2010/02/09 12:24

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

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

gooドクター

人気Q&Aランキング