2012-10-11 23 views
0

我在mysql表中有可變數量的行。我想改變它們出現的順序,而不考慮任何重要列的內容,那麼最好的方法是什麼?如何管理動態排序,mysql和php的order_by列

舉例來說,如果我有:

id , content, order-by 
1 , d  , 1 
2 , a  , 2 
3 , v  , 3 
4 , i  , 4 
5 , d  , 5 

,並要重新排序的字段:

id , content, order-by 
3 , v  , 1 
4 , i  , 2 
5 , d  , 3 
2 , a  , 4 
1 , d  , 5 

其排序由ID會是什麼樣子:

id , content, order-by 
1 , d  , 3 
2 , a  , 4 
3 , v  , 1 
4 , i  , 2 
5 , d  , 5 

併發症是我必須手動或以編程方式更新受更改順序,刪除或addi影響的其他行灰。有沒有一些內置的功能或腳本已經做了一些人來節省一些時間?

預先感謝您的時間。

+1

如果你要打倒它,至少要說明原因。 –

回答

1

每當程序更改訂單時,都必須使用正確的order_by值更新order_by列。我曾在一個程序集上進行過程,通過拖放操作可以更改頁面順序。這些職位將保存在JS變量中,直到保存時間。提交後,修改後的訂單將在表格中更新。

當您訪問的表,你必須做的:

SELECT * from table order by order_by; 

這一切都取決於你的表的大小雖然,你正在努力實現的順序是什麼。

正如@Matt Gibson在評論中提到的那樣,如果您嘗試執行列表的拖放排序,則可以使用jQuery UI Sortable。你可以實現類似的效果 -

var result = $('#sortable').sortable('toArray'); 
$.post(
     url, 
     "order="+result 
); 

接收PHP url中的位置值並對其進行處理。

+1

一些Javascript庫對此技術有內置的幫助。例如,jQuery UI的Sortable有一個[Serialize](http://api.jqueryui.com/sortable/#method-serialize)方法,它將以服務器代碼的相當簡單的方式向服務器拋出新訂單構造UPDATE語句。 –

+0

@Matt吉布森 - jQuery的UI排序結合Ajax後做了我的詭計+1 – janenz00