Tıklandığında url bir get değişken ekleyerek sütun adına göre sonuçlarını sıralamak olacağını bağlantılar olarak ben şu anda sütun başlığını kullanıyorum bulunuyor. İşte bir örnek:
<a href="
<?php
// Sorts by order id. If already sorted by order id, then it will change the link to sort descending
if(!isset($_GET['sortby']) || $_GET['sortby'] != 'order_id'){
echo $_SERVER['SCRIPT_NAME'] . '?sortby=order_id'; //example: tracker.php?sortby=order_id
} elseif(isset($_GET['sortby']) || $_GET['sortby'] == 'order_id'){
echo $_SERVER['SCRIPT_NAME'] . '?sortby=order_id_desc'; //example: tracker.php?sortby=order_id_desc
}?>
">Order ID</a>
Ben aynı zamanda kullanıcıların bir selectbox bir kategori seçin girin ve ardından bir SEARCHTERM girebileceğiniz bir form var. Ben ifadeleri eğer kullanarak ve kontrol ifadeleri geçiş ediyorsam $ _GET ['sortby'] değişkeni ve $ _POST ['search_submit'] değişkeni ayarlanır ve eğer öyleyse, GET değişkenin değerine göre belli bir sql deyimini çalıştırmak için .
4 farklı senaryo vardır.
1. Default: If neither sort nor search is set. Bu bir çalışıyor:
if(!isset($_GET['sortby']) && !isset($_POST['search_submit'])){ //Default, If no sort or search is set
$sql = 'SELECT *
FROM orders
ORDER BY order_id DESC';
}
2. If the search is set but the sort is not. Bu bir çalışıyor:
if(isset($_POST['search_submit'])) {
$search_string = ' WHERE ' . $_POST['searchby'] . '= "' . $_POST['search_input'] . '" ';
}
if(!isset($_GET['sortby']) && isset($_POST['search_submit']) ){ //If the search is set but no sort
$sql = "SELECT *
FROM orders"
. $search_string .
"ORDER BY order_id DESC";
}
3. If the sort is set, but the search is not. Bu bir çalışıyor:
if(isset($_GET['sortby']) && !isset($_POST['search_submit'])) { //If the sort is set but no search
switch ($_GET['sortby']) {
case "order_id":
$sql = "SELECT *
FROM orders
ORDER BY order_id ASC";
break;
case "order_id_desc":
$sql = "SELECT *
FROM orders
ORDER BY order_id DESC";
break;
}
}
Yukarıdaki 4. If the search AND sort is set. Hepsi 3 ifadeler çalışır, ama sonuncusu bana sorun veriyor eğer.
if(isset($_GET['sortby']) && isset($_POST['search_submit'])) { //If the sort AND search is set
switch ($_GET['sortby']) {
case "order_id":
$sql = "SELECT *
FROM orders"
. $search_string .
"ORDER BY order_id ASC";
break;
case "order_id_desc":
$sql = "SELECT *
FROM orders"
. $search_string .
"ORDER BY order_id DESC";
break;
}
}
Ne olur arayabilir olduğunu, ancak en kısa sürede sütun başlıklarından birine tıklayın ve yeni GET değişkeni ile sayfayı yeniden yükler gibi, böylelikle yine tüm sonuçları gösteren, mevcut POST değişken kurtulacaksınız. Ben $ _POST ['search_submit'] isset sonra oturumuna geçerli POST değişkeni yüklemek ve daha sonra oturum değişkeni ayarlandığında ise beyanı onay görmek için eğer son yapmaya çalıştı, ama sonra ne olur oturumu her zaman ayarlanmış olmasıdır ve ben geri ana sayfasına gitmek için çalışırsanız, arama sonuçlarını tutacak.
Belki bir yerde oturumu yok etmek gerekir? Belki de sıralama ve arama özelliklerini birleştirerek alıyor olabilir genel olarak daha iyi bir yaklaşım var mı?