2012-03-15 21 views
1

私は複数のフォームタグを持つPHPページを持っています。各フォームは特定のタブを扱っています。単なる検索ですが、各タブは日付、番号、または名前の検索を提供します。html PHPがフォーム投稿データを特定しています

各フォームタグには異なる名前が付いています....どのようなフォームが結果ページに送信され、それに従ってデータベース検索をカスタマイズすることができますか?

は、$ _POSTまたは$ _REQUESTのものですか?

<form name="invoice" action="result.php" method="POST"><br><br> 
    <form name="customer" action="result.php" method="POST"><br><br> 
    <form name="customer" action="result.php" method="POST"><br><br> 

上記のそれぞれには、入力ボックスと送信ボタンが含まれています。

おかげで、

答えて

1

firefoxの入力タイプsubmitのkey => valueのペアが正しく送信されません。私は通常使用

別の解決策は、<input type="hidden" name="action" value="your_customAction" />

+0

ありがとうございます...先ほど提案したような隠しフィールドを先に進めますが、選択肢があると良いです。 –

+2

ユーザーがフォームを送信するためにEnterキーを押すと、送信ボタンがPOST変数として送信されません。 – MrCode

5

私はフォーム名を指定して、各フォームの隠し入力フィールドを追加することをお勧め:

<input type="hidden" name="formname" value="invoice" /> 

その後、あなたは$ _POST [「フォーム名」]変数でこれを取得することができます。

+0

完全に私の心をスキップしました!ありがとうございます:) –

-2

すべてのフォームに異なる送信ボタン名が必要です。

EDIT: -

あなたがそれぞれに一つだけの要素を持っている場合は、単一のテキストでバグを持つIEはあなたが入力したを使用してフォームを送信した場合、それがあることを、エレメントため、あなたの最善の策は、ペターのソリューション@使用することです形成キーの場合、送信ボタンは$_POSTに設定されません。

フォームに複数の要素がある場合は、送信ボタンの別の名前を選択することが考えられます。

+0

提出ボタンが常に投稿されるわけではありません - 場合によっては入力キーを使用してフォームを送信した場合 – dldnh

+0

これはフォームを送信するために使用された送信ボタンを決定する良い解決策ですが、隠れた入力は安全です(正しいブラウザを使用してテキストフィールドのenterを押すことでバイパスすることはできません)。 – Quentin

+0

@dldnh:あなた自身で試してみてください –

1

1つの方法は、各フォームに異なる隠れた入力を保存し、サーバー側の隠れた入力をチェックして、それがどのフォームであるか把握することです。

<form> 
    <input type="submit" name="action" value="search_invoice" /> 
    ... 
</form> 

<form> 
    <input type="submit" name="action" value="search_customer" /> 
    ... 
</form> 

、あなたのPHPで

switch($_POST['action']) { 
    case 'search_invoice': 
     // ur code 
     break; 

    case 'search_customer': default: 
     // ur code 
     break; 
} 

が、しかし古いバージョンに注意してください。そうは次のようにあなたは、1のために、それぞれのボタンを提出し、名前と値を追加することができ

<input type="hidden" name="formname" value="invoice" /> 
<input type="hidden" name="formname" value="customer" /> 
<input type="hidden" name="formname" value="customer2" /> 
0
  1. 検索
  2. にサーバーに送信されているいかなるname属性をPOSTしない、GETメソッドを使用して実行する必要があります置くことです。
  3. 各タブで日付、数字、または名前の検索が可能な場合は、検索フィールドの名前を適切に指定してください("date"など)。
関連する問題