2012-10-11 16 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