2011-02-05 24 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(ソート方向)のオプションです。 。前の変数が充填されるフォームを通過している

を今、私はこのようなリンクを持っている..私はREQUEST_URIを使用していますので、明らかに間違っている

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

- 人はそれの後に変更された場合ために当初、URLがなる設定されている。

&sd=a&sd=d 

私は前にこの問題に遭遇していると確信しているが、非常に私はそれを解決する方法を考えることはできません。 GETがすでに設定されている場合は、私がチェックするにはどうすればよい

(例えば、SDなど)などがあれば、上に示したリンクを生成するために、URLの末尾に追加し、そうでない場合は、それを変更。

編集:たぶん、スクリーンショットを理解するのに役立つだろう: http://dl.dropbox.com/u/10591127/Capture.PNG

乾杯を、 マット

+1

isset($ _ GET ['sd'])? –

+0

ifステートメントは完全に動作するはずです。変数が設定されているかどうかを調べるには 'isset()'を使ってください。それは、リンクごとに繰り返される必要がありません - – Shoe

+0

はあなたに感謝、私はこれを実行するかどうかは全くわからないんだけど、既存の_GET – Matt

答えて

20

あなたは、個々のGET変数を取得するスーパーグローバル$ _GETを使用することができます。これを配列に置くと、再び値を設定するだけですべての値を上書きできます:

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

グレートを交換する問題を解決すると思いませんか?私はこのような多くのリンクを持っています... Rent | Availabity Matt

+0

は、単に{単純な関数createSortByLink($ SORTBY)を作成します... – Tomik

関連する問題