এই বিষয়টিতে অনেক সংস্থান / উত্তর অনুসন্ধান করার পরে, আমি নিজের কোড করার সিদ্ধান্ত নিয়েছি। এখানে @ টেলরঅটওয়েলের উত্তরের ভিত্তিতে, আমি এভাবেই আগত $ _GET অনুরোধটি প্রক্রিয়াকরণ করি এবং প্রতিটি উপাদানকে সংশোধন / হেরফের করি।
ইউআরএলটি ধরে নিলে: http://domain.com/category/page.php?a=b&x=y
এবং আমি বাছাইয়ের জন্য কেবল একটি পরামিতি চাই: হয়? Desc = কলাম_নাম বা? এসিসি = কলাম_নাম। এইভাবে, একসাথে ইউআরএল প্যারামিটার বাছাই এবং এক সাথে অর্ডার করার জন্য যথেষ্ট। সুতরাং URL টি হবে সম্পর্কিত টেবিল শিরোলেখের সারিটির প্রথম ক্লিকের http://domain.com/category/page.php?a=b&x=y&desc=column_name ।
তারপরে আমার কাছে টেবিল সারি শিরোনাম রয়েছে যা আমি আমার প্রথম ক্লিকে ডিইএসসি এবং একই শিরোনামের দ্বিতীয় ক্লিকে এএসসি বাছাই করতে চাই। (প্রতিটি প্রথম ক্লিক "অর্ডার বাই কলাম DESC" এর আগে হওয়া উচিত) এবং যদি কোনও বাছাই না হয়, এটি ডিফল্ট অনুসারে "তারিখ তারপর আইডি" অনুসারে বাছাই করবে।
আপনি এটিকে আরও উন্নত করতে পারেন, যেমন আপনি প্রতিটি G _GET উপাদানগুলিতে পরিষ্কার / ফিল্টারিং ফাংশন যুক্ত করতে পারেন তবে নীচের কাঠামোটি ভিত্তি স্থাপন করে la
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 দিয়ে শুরু করে পুরো ইউআরএলের জন্য $ _SERVER [SQLT_URI] ব্যবহার করতে পারেন )
তারপরে আমি মাইএসকিউএল কোয়েরিতে ফলাফল প্রাপ্ত $ অর্ডারটি উপরে পেয়েছি:
"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>";
সংক্ষিপ্তসার: এটি ইউআরএল পড়বে, each _GET উপাদানগুলির প্রতিটি সংশোধন করবে এবং "এর সঠিক ব্যবহারের সঠিক ফর্মটি দিয়ে আপনার পছন্দের পরামিতিগুলি দিয়ে চূড়ান্ত URL তৈরি করবে?" এবং "&"
echo http_build_url($url, array("query" => "the=query&parts=here"), HTTP_URL_JOIN_QUERY);
। তবে আপনার প্রয়োজনpecl install pecl_http
বা সুরকারের মাধ্যমে জ্যাকাসমিথ / http_build_url ইনস্টল করতে হবে ।