2012-09-29 74 views
2

我在表單中使用2個圖像來整理來自數據庫的查詢結果。該表單使用POST方法提交。當我點擊第一張圖片時,查詢結果必須按升序排序,而當我點擊第二張時,結果必須按降序排序。 這是形式的代碼:

<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,並且搜索結果不會被排序。

+0

對不起,我的回答是不正確的。 – lanzz

+0

那麼爲什麼?我只是做了一些研究,發現它很貼切。 – user1707973

+0

圖像輸入_does_提交'.x' /'.y'座標,但它也應該提交實際值與輸入的基本名稱。 – lanzz

回答

1

很顯然,在HTML5標準開發的某個時刻,有人認爲input type="image"的實際值並不重要,他們決定不需要瀏覽器以任何方式提交它:link to specification

不幸的是,似乎不僅Firefox嚴格遵守規範。 A comment to a bug submitted to the Firefox developers指出在Opera和Internet Explorer中也觀察到此行爲。

因此,您可以通過檢查隨窗體提交的座標來測試圖像是否已被點擊,但是無法確定哪個圖像被點擊過,因爲您無法可靠地接收其值不同的瀏覽器和仍然通過價值的瀏覽器可能也會遵循規範並在未來的某個時間點放棄。您需要以不同的方式命名這兩個按鈕。

+0

我試試看,並讓你知道:) – user1707973

+0

然後,我將如何得到sort的值,無論是asc還是desc?我的意思是可以請你寫一行代碼,並告訴我 – user1707973

+0

它得到了解決:) – user1707973

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"相當於給背景圖像按鈕,所以使用它。

+0

你能解釋爲什麼嗎?我沒有得到user1707973的錯誤 –

+0

我編輯了我的答案。@ ninsuo –

+0

感謝你的細節。 –

0

如果在窗體中有多個名稱相同的輸入控件,它們將在PHP中顯示爲數組而不是單個值。

什麼

var_dump($_POST) 

var_dump($_REQUEST) 

說明了什麼?