我遇到了编写下一个功能的问题。我希望用户能够重新排列记录并更改display_order值。我正在使用Jquery UI的draggable和droppable来促进这一点。
我可以看到display_order值的简单交换是如何工作的。但我想为记录设置显示顺序,理想情况下让其他人随机播放,这样就没有重复的display_order值。除了没有理解我将如何做到这一点,似乎很难编码和低效,洗牌清单中的每个值。
所以我愿意接受关于这种事情通常或应该如何完成的其他建议。
我虽然可能使用像3.000这样的值来表示顺序然后当我想创建一个记录时取其位置使其值为3 - 0.001,因此其2.999并将在2和3之间排序。但我可以看到这个想法有很多不妥之处,似乎不是一条好路。
感谢您的任何意见!
答案 0 :(得分:0)
smallint
中添加一个排序列,
mediumint
或int
取决于。{
预期的总条目数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 );