इस विषय पर कई संसाधनों / उत्तरों की खोज करने के बाद, मैंने खुद को कोड करने का निर्णय लिया। यहाँ @ टेलरऑटलवेल के उत्तर के आधार पर, यह है कि मैं आने वाले $ _GET अनुरोध को कैसे संसाधित करता हूं और प्रत्येक तत्व को संशोधित / हेरफेर करता हूं।
मान लीजिए कि url है: http://domain.com/category/page.php?a=b&x=y
और मैं छँटाई के लिए केवल एक ही पैरामीटर चाहता हूँ: या तो? Desc = column_name या? Asc = column_name। इस तरह, एकल url पैरामीटर एक साथ क्रमबद्ध और क्रमबद्ध करने के लिए पर्याप्त है। तो URL संबंधित तालिका शीर्ष लेख पंक्ति के पहले क्लिक पर http://domain.com/category/page.php?a=b&x=y&desc=column_name होगा ।
फिर मेरे पास टेबल रो हेडिंग है जिसे मैं अपने पहले क्लिक पर डेस्क सॉर्ट करना चाहता हूं, और उसी हेडिंग के दूसरे क्लिक पर एएससी। (प्रत्येक पहले क्लिक पर "ORDER BY कॉलम DESC" पहले होना चाहिए) और यदि कोई छँटाई नहीं है, तो यह डिफ़ॉल्ट रूप से "तिथि फिर आईडी" के आधार पर छाँटेगा।
आप इसे और बेहतर कर सकते हैं, जैसे आप प्रत्येक $ _GET घटक में सफाई / फ़िल्टरिंग फ़ंक्शंस जोड़ सकते हैं, लेकिन नीचे की संरचना नींव खो देती है।
foreach ($_GET AS $KEY => $VALUE){
if ($KEY == 'desc'){
$SORT = $VALUE;
$ORDER = "ORDER BY $VALUE DESC";
$URL_ORDER = $URL_ORDER . "&asc=$VALUE";
} elseif ($KEY == 'asc'){
$SORT = $VALUE;
$ORDER = "ORDER BY $VALUE ASC";
$URL_ORDER = $URL_ORDER . "&desc=$VALUE";
} else {
$URL_ORDER .= "&$KEY=$VALUE";
$URL .= "&$KEY=$VALUE";
}
}
if (!$ORDER){$ORDER = 'ORDER BY date DESC, id DESC';}
if ($URL_ORDER){$URL_ORDER = $_SERVER[SCRIPT_URL] . '?' . trim($URL_ORDER, '&');}
if ($URL){$URL = $_SERVER[SCRIPT_URL] . '?' . trim($URL, '&');}
(आप http://domain.com से शुरू होने वाले पूर्ण URL के लिए $ _SERVER [SCRIPT_URI] का उपयोग कर सकते हैं )
तब मैं MySQL क्वेरी में ऊपर प्राप्त $ ORDER का उपयोग करता हूं:
"SELECT * FROM table WHERE limiter = 'any' $ORDER";
अब URL देखने का कार्य यदि कोई पिछली छँटाई है और URL को ""? या अनुक्रम के अनुसार "&":
function sort_order ($_SORT){
global $SORT, $URL_ORDER, $URL;
if ($SORT == $_SORT){
return $URL_ORDER;
} else {
if (strpos($URL, '?') !== false){
return "$URL&desc=$_SORT";
} else {
return "$URL?desc=$_SORT";
}
}
}
अंत में, फ़ंक्शन का उपयोग करने के लिए तालिका पंक्ति शीर्षलेख:
echo "<th><a href='".sort_order('id')."'>ID</a></th>";
सारांश: यह URL पढ़ेगा, $ _GET घटकों में से प्रत्येक को संशोधित करेगा और आपकी पसंद के सही रूप के साथ आपकी पसंद के मापदंडों के साथ अंतिम URL बनाएगा? " तथा "&"
echo http_build_url($url, array("query" => "the=query&parts=here"), HTTP_URL_JOIN_QUERY);। लेकिन आपको संगीतकार के माध्यम से jakeasmith / http_build_url की आवश्यकता होगीpecl install pecl_httpया स्थापित करना होगा ।