从前端更改记录的顺序

时间:2011-06-12 08:24:35

标签: php jquery mysql

我遇到了编写下一个功能的问题。我希望用户能够重新排列记录并更改display_order值。我正在使用Jquery UI的draggable和droppable来促进这一点。

我可以看到display_order值的简单交换是如何工作的。但我想为记录设置显示顺序,理想情况下让其他人随机播放,这样就没有重复的display_order值。除了没有理解我将如何做到这一点,似乎很难编码和低效,洗牌清单中的每个值。

所以我愿意接受关于这种事情通常或应该如何完成的其他建议。

我虽然可能使用像3.000这样的值来表示顺序然后当我想创建一个记录时取其位置使其值为3 - 0.001,因此其2.999并将在2和3之间排序。但我可以看到这个想法有很多不妥之处,似乎不是一条好路。

感谢您的任何意见!

1 个答案:

答案 0 :(得分:0)

  • 在表smallint中添加一个排序列, mediumintint取决于。{ 预期的总条目数
  • 新条目附加到结尾max(sorting) + 1
  • 重新排序某个项目时,获取它所在的新位置并相应地更改更高的排序条目:

    mysql_query('UPDATE yourTable set sorting = '.$yourNewposition.' where id='.$yourUniqueId .' LIMIT 1');

    mysql_query('UPDATE yourTable set sorting = sorting + 1 where sorting >= '.$yourNewposition.' AND id != '.$yourUniqueId );