84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
是這樣的 以下操作只會有一個使用者當使用者建立每一筆數據並且用AI自動編出號碼(KEY)所以號碼不會重複但是假設以下
以下操作只會有一個使用者
1 A 2 B 3 C 4 D 5 E
前面是AI自動產生的數字 後面英文字是數據使用者建立五筆資料後假設我想要把排列順序變換:A移到第四個 D移到第五個 E移到第一個(假設)請問這要如何在PHP上實現呢?因為是自動編出號碼...這樣要如何改變順序?(顯示時我是用DESC排列)
A移到第四個 D移到第五個 E移到第一個
楼主,恭喜你,提出了一个无人能解决的问题。
这个问题,在你编程的一段时间后,就会遇到,每个人都会。但是很多人选择忽略它。
这个看起来并不复杂的自定义排序问题。
它的难点在于,我们将某条数据插入到AB之间,那么,从B开始,直到最后一行数据都得往下走一行
一个不经过大脑的解决方案是:每个数据之间用很大的数值间隔,就不用每次调整所有后面的行了。例如:
id data 100 A 200 B 300 C 400 D 500 E
那么我们把E插入到AB之间的话,就只需要将E的id改为101即可。并不用update其他行。但是这样做的误区是:并没有解决问题,而是选择了掩耳盗铃逃避问题。当有100个元素被插入AB之间的话,C还是不可避免的要被更新。
另一个可行的方案是使用链表结构来储存每行数据。例如:
id data next 100 A 200 200 B 300 300 C 400 400 D 500 500 E 0
那么我们要将E插入到AB之间,只需将A的next字段改为500, E的next改为200,更新两条记录即可实现一次调整顺序。
但是这样做的不可行之处在于,mysql并不支持链表结构。
另一种取巧的办法是只允许对调两个行的位置。而不是插入两个行之间。但是应用场景受限。
所以,如何在php+mysql的架构中解决用户自定义排序的问题,还需要楼主一起思考啊
这两个字段搞不定 再加一个sort字段吧 用来保存排序的数值 查询的时候 order by sort desc
楼主,恭喜你,提出了一个无人能解决的问题。
这个问题,在你编程的一段时间后,就会遇到,每个人都会。但是很多人选择忽略它。
这个看起来并不复杂的自定义排序问题。
它的难点在于,我们将某条数据插入到AB之间,那么,从B开始,直到最后一行数据都得往下走一行
一个不经过大脑的解决方案是:每个数据之间用很大的数值间隔,就不用每次调整所有后面的行了。例如:
那么我们把E插入到AB之间的话,就只需要将E的id改为101即可。并不用update其他行。但是这样做的误区是:
并没有解决问题,而是选择了掩耳盗铃逃避问题。当有100个元素被插入AB之间的话,C还是不可避免的要被更新。
另一个可行的方案是使用链表结构来储存每行数据。例如:
那么我们要将E插入到AB之间,只需将A的next字段改为500, E的next改为200,更新两条记录即可实现一次调整顺序。
但是这样做的不可行之处在于,mysql并不支持链表结构。
另一种取巧的办法是只允许对调两个行的位置。而不是插入两个行之间。但是应用场景受限。
所以,如何在php+mysql的架构中解决用户自定义排序的问题,还需要楼主一起思考啊
这两个字段搞不定 再加一个sort字段吧 用来保存排序的数值 查询的时候 order by sort desc