2011-02-05 5 views
8

एएससी या डीईएससी के विभिन्न विकल्पों को सॉर्ट करने के साथ, एक उन्नत खोज विकल्प करने का प्रयास कर रहा है।PHP यूआरएल पैरामीटर प्राप्त करें, यदि मौजूद है, तो प्रतिस्थापित करें?

उदाहरण यूआरएल:

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

बोल्ड हाइलाइट किया गया & एसडी (तरह दिशा) विकल्प है। । पिछले चर एक रूप है जिसमें भर जाता है के माध्यम से पारित कर रहे हैं

अब मैं इस तरह संबंध हैं ..

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

कौन सा स्पष्ट रूप से गलत है क्योंकि मैं REQUEST_URI उपयोग कर रहा हूँ - क्योंकि एक व्यक्ति यह बाद परिवर्तित करता है शुरू में सेट कर दिया जाता URL होगा:

&sd=a&sd=d 

मुझे यकीन है कि मैं इस समस्या का सामना करना से पहले आ गए हैं, लेकिन काफी सोच भी नहीं सकते कि कैसे मैं इसे हल कर रहा हूँ।

मैं कैसे जांचूं कि एक जीईटी पहले से सेट है (जैसे एसडी) और यदि ऐसा है, तो इसे बदलें, अन्यथा, ऊपर दिखाए गए लिंक का उत्पादन करने के लिए इसे URL के अंत में जोड़ें।

संपादित करें: हो सकता है एक स्क्रीन शॉट को समझने के लिए मदद मिलेगी: http://dl.dropbox.com/u/10591127/Capture.PNG

चीयर्स, मैट

+1

जारी ($ _ GET ['sd'])? –

+0

एक अगर कथन पूरी तरह से काम करना चाहिए। एक चर सेट किया गया है या नहीं, यह जांचने के लिए 'isset()' का उपयोग करें। – Shoe

+0

मौजूदा _GET – Matt

उत्तर

20

आप $ _GET प्रत्येक व्यक्ति प्राप्त चर पाने के लिए superglobal उपयोग कर सकते हैं। यदि आप इसे किसी सरणी में डालते हैं, तो आप इसे फिर से सेट करके किसी भी मान को ओवरराइट कर सकते हैं:

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

को प्रतिस्थापित करने के लिए समस्या का समाधान नहीं करेगा, धन्यवाद, लेकिन मुझे पूरा यकीन नहीं है कि इसे कैसे निष्पादित किया जाए - क्या प्रत्येक लिंक के लिए इसे दोहराने की आवश्यकता नहीं होगी? मेरे पास इस तरह के कई लिंक हैं ... Rent | Availabity Matt

+0

फिर बस सरल फ़ंक्शन बनाएंSortByLink ($ sortby) {... – Tomik

संबंधित मुद्दे