2

1つのフォームで2つの画像を使用して、データベースからクエリ結果を分類しています。フォームはPOSTメソッドを使用して送信されます。最初の画像をクリックすると、クエリ結果が昇順で並べ替えられ、2番目の画像をクリックすると、結果が降順で並べ替えられる必要があります。フォームのコードは次のとおりです。

 <form name="" action="" method="post">
   <input type="hidden" name="typep" value="price" />
   <input type="image"  name="sort"  value="asc"  src="images/asc-ar.png" />
   <input type="image"  name="sort"  value="desc" src="images/dsc-ar.png" />
 </form>

これは、$_REQUEST['sort']変数が設定されているかどうか、したがって並べ替えが必要かどうかを確認するためのコードです。

if ($_REQUEST['sort'] != "")
{
    $sort  = $_REQUEST['sort'];
    $typep = $_REQUEST['typep'];
   //query to be executed depending on values of $sort and $typep
}

Firefoxは変数を検出し$_REQUEST['typep']ますが、変数は検出しません$_REQUEST['sort']。ただし、これはChromeでは完全に機能します。Firefoxでサイトをテストする$_REQUEST['sort']と、変数が検出されないため、if条件がfalseと評価され、検索結果が並べ替えられません。

4

3 に答える 3

1

どうやら、HTML5標準開発のある時点で、の実際の値input type="image"は重要ではないと誰かが判断し、ブラウザにそれを送信するように要求しないことを決定しました:仕様へのリンク

残念ながら、Firefoxが仕様に厳密に準拠しているだけではないようです。Firefox開発者に提出されたバグへのコメントは、この動作はOperaとInternetExplorerでも観察されると述べています。

したがって、フォームで送信された.x/.y座標を調べることで画像がクリックされたかどうかをテストできますが、異なるブラウザやブラウザ間でその値を確実に受け取れないため、2つの画像のどちらがクリックされたかを判断できません。それでも値を渡すと、仕様に従い、将来のある時点で値を削除する可能性があります。2つのボタンに異なる名前を付ける必要があります。

于 2012-09-29T07:57:36.240 に答える
0

実際、Firefoxはクリックの座標のみを送信します。使用したい場合は、以下を使用input type="image"できます。

<input type="submit" name="sort" value="desc"><img src="..." /></input>

<input type="submit" name="sort" value="asc"><img src="..." /></input>

または、cssを使用してinput type="submit"input type="image"ボタンに背景画像を与えるのと同じなので、代わりにそれを使用してください。

于 2012-09-29T08:07:21.830 に答える
0

form に同じ名前の入力コントロールが複数ある場合、それらは PHP では単一の値ではなく配列として表示されます。

何が

var_dump($_POST)

また

var_dump($_REQUEST)

見せる?

于 2012-09-29T09:43:39.380 に答える