2011-01-28 72 views
1

我帶來了數據庫中的所有值,並將它們顯示在頁面上。現在,如果我點擊列,它應該升序或降序排序。使用php排序

我該怎麼做?

+0

您的數據集是否適合於一個頁面,或者它將被分頁?如果是這樣 - 你想排序整個數據集還是隻有一個頁面? – 2011-01-28 06:30:20

+0

請通過http://stackoverflow.com/search?q=sort+column+php,然後指出你仍然有問題。 – Gordon 2011-01-28 08:57:50

+0

可能重複[如何按列標題排序,如果點擊,然後再次單擊時按相反順序排序?](http://stackoverflow.com/questions/967535/how-can-i-sort-by-列表頭 - 如果點擊後按順序排序 - 時) – Gordon 2011-01-28 08:58:11

回答

0

您將使用JavaScript。我建議sorttable

+0

JS的使用非常有限,僅適用於一頁大小的數據集 – 2011-01-28 06:26:44

+0

@Col。 「單頁」是什麼意思?那麼會有那麼多`tr`元素需要跟蹤,JavaScript對於大型數據集來說是不可行的? – sdleihssirhc 2011-01-28 06:30:21

+0

的意思是像Stackoverflow。有很多頁面有問題,而且沒有瀏覽器可以容納所有的頁面 - 因此,對於每個頁面,另一個頁面向服務器發出請求。並在另一個方向排序**所有**問題將需要另一個請求到服務器以及 – 2011-01-28 06:34:26

4

如果您只想在PHP中完成此操作,則需要將參數添加到URL中的查詢字符串中。

www.example.com/table.php?col=mycolumn&sort=desc

這將是該列的錨標記,然後在table.php,你將不得不處理排序邏輯。

-3

要求:www.example.com/table.php?col=mycolumn &排序=遞減

//may be some check , about the column is in the table field 
//sort is in the set of (asc , desc) 

$q = "select * from mytable where mycond order by addslashes($_GET['mycolumn']) addslashes($_GET['sort'])"; 
0

擴展在roflwaffle的帖子,你將要使用的查詢字符串瓦爾。從這些構建一個你添加到你的查詢中的字符串。

$querySort = array(); 
if (isset($_GET['colName'])) { 
    $s = $_GET['colName']; 
    $snext = ''; 
    switch ($s) { 
     case '':  $snext = 'desc'; break; 
     case 'desc': $snext = 'asc'; break; 
     case 'asc': $snext = ''; break; 
     default:  $snext = ''; 
    } 
    if (!empty ($snext)) { 
     $querySort[] = "colName $snext"; 
    } 
    $colName_link = "colName=$snext"; 
    $colName_text = $snext; 
} 

// Further column checks 

if (count($querySort) == 0) { 
    // Default sort if no sort is given. 
    $querySort[] = "colName asc"; 
} 

$sort = implode (', ', $querySort); 

$query = mysql_query ("SELECT * FROM table ORDER BY $sort"); 

因此,考慮下面的查詢字符串,

www.example.com/table.php?colName=desc 

查詢應該是這樣的

SELECT * FROM table ORDER BY colName desc LIMIT 0, 15 

和類別鏈接看起來像這樣

echo "<a href='?$colName_link'>Column Name</a> <small>$colName_text</small>"; 
0

的最好的方法是使用java腳本(無需刷新頁面)。雅虎的YUI3有一個非常好的數據組件。如果您在PHP頁面上獲得完整的數據集,我無法從您的問題中彌補,但現在我將假設這一點。您應該查看YUI3's Column Sorting頁面,以幫助您入門。

0

請看看THIS鏈接。請檢查示例HERE。我在一個項目中使用它來達到同樣的目的,希望它也能幫助你。