2011-02-05 30 views
8

嘗試執行高級搜索選項,並對不同選項ASC或DESC進行排序。PHP URL GET參數如果存在,則替換?

例URL:

search.php?accom_type=x&no_rooms=x&rooms_total=x&prop_area=x&rent_less=&rent_more=&available=&go=Search&sd=a

粗體突出顯示是& SD(排序方向)選項。 。前面的兩個變量是通過填充在一個表單傳遞

現在我有這樣的鏈接..

<a href="<?=$_SERVER['REQUEST_URI']?>&sd=a">ASC</a>|<a href="<?=$_SERVER['REQUEST_URI']?>&sd=d">DESC</a> 

這顯然是錯誤的,因爲我使用的是REQUEST_URI - 因爲如果一個人後,它的變化最初設置的網址將是:

&sd=a&sd=d 

我確定我以前遇到過這個問題,但不能完全想到我是如何解決它的。

如何檢查GET是否已設置(如sd),如果是,請更改它,否則將其添加到URL的末尾,以生成上面顯示的鏈接。

編輯:也許一個屏幕快照將有助於理解: http://dl.dropbox.com/u/10591127/Capture.PNG

乾杯, 馬特

+1

isset($ _ GET ['sd'])? – 2011-02-05 18:22:24

+0

if語句應該完美地工作。使用`isset()`來檢查是否設置了一個變量。 – Shoe 2011-02-05 18:23:38

回答

20

您可以使用$ _GET超全局讓每一個人GET變量。如果將它放在數組中,則可以通過重新設置來覆蓋任何值:

$params = $_GET; 
$params['sd'] = "whateveryoulike"; 
$paramString = http_build_query($params);