排序表行并通过ajax传递排序索引

时间:2012-07-04 23:24:49

标签: php jquery ajax jquery-ui-sortable

这是一个jsfiddle:http://jsfiddle.net/vT67Q/

表格如下:

table_products
----------------
id
sort_order
product_name
view_count
model_num
price
shipp_sep

此表包含100多种产品,每种产品都与一个类别相关联。他们没有sort_order值,每个字段都为null。我的问题是如何通过排序索引?我会为每一行计算jquery并将值附加到隐藏文本框中吗?或者如果没有排序值碰撞并且始终保持唯一且有序,它将如何完成。

1 个答案:

答案 0 :(得分:0)

我将如何做到这一点:

  • 使用(隐藏)字段(例如行的自定义HTML属性)加载表,告诉您行的sort_index,只有它不是NULL
  • 在PHP之前订购该表,知道您可能会在设置之后处理NULL sort_order行
  • 在drop事件上
  • ,首先访问行:
    • 获取最高的非NULL行,并将所有这些行(在您的已删除行中)设置为各自的订单
    • 现在,如果下面的行不是NULL,则增加所有非NULL值的sort_order(你将表格向下移动一行)
    • 在另一种情况下也一样,如果刚刚结束的行有更高的sort_order,则将所有那些从原始行位置减少到最后一行(现在向上移动一行)
  • 当然,将删除的行设置为正确的sort_order

这看起来相当复杂,我相信在这种情况下你应该将表行'sort_order定义为NON NULL AUTO_INCREMENT来摆脱那个丑陋的NULL值。

另一种方法是创建一个自定义SQL函数INSERT_ROW(index),它可以完成所有递增和递减。在Ajax中执行此操作似乎很残酷。