问题描述
如我有一个相薄,这个相薄里面有很多张相片,当我点击这个相薄时列出了它的所有相片,这时我要对这些相片进行手动排序,同时排序结果要存入到数据庫中,请教怎么实现呢?问题补充:谢谢waterdh,您说的思路很对,但现在问题是我想在页面上有个“向上”和“向下”的按键,点击这两个按键时就要显示页面效果即更换上下两行(通过javascript实现),这时还没有将排序结果插入DB,等我所有的相片都排序ok之后再通过点击一个“储存更新”按键来更新DB;问题补充:wangxin0072000 说得也不错,可是这样没有立即显示页面效果啊!问题补充:llade 或许没明白我的意思,我是先排序在页面同步显示排序效果,而此时还没有将排序结果插入数据庫,最后等我都排好了才插入的数据庫。(就类似javaeye blog的分类管理一样,有个上移和下移的按键,而javaeye blog的分类管理是每一次上移和下移都同步更新了数据庫然后再从数据庫里面查了一次数据,这样如果说我有1000甚至说上万的相片的话,那这样每次都重新查一次数据庫不是代价很大!!!)嗯,不过现在我已经实现我想要的效果了,谢谢各位帮忙!!
解决方案
相册的排序字段,记录下相册的所有相片id,比如:12,15,1,4,9显示的时候,根据这几个id列表来获取相片内容,sql类似于 select * from xxx where id in(12,15,1,4,9) order by find_in_set('id','12,15,1,4,9')如果没有类似find_in_set这样的sql函数支持,那就自己写个简单算法排序下。如果对这写相片手动排序,比如在相片下面提供左移或者右移的按钮,按了以后算一下,重新生成新的id列表,更新到相册排序字段。思路就是这样的,具体算法自己动动脑筋吧。
解决方案二:
忍不住说两句,既然数据库都支持排序的功能,为什么还要排序然后重新插入数据库呢?假如你有1000张相片,每张600k,那么1000张就有600m,你好不容易把它们放进数据库,整个过程可能要5分钟吧。现在又要再来一次这样的痛苦过程。数据库为了排序查找开发出索引这样的功能。这样做不是扬长避短,而是舍长就短啊。
解决方案三:
在数据库表中建一个字段标示顺序,比如order。从数据库取出的时候order by order把数据库中得到的数据存放在List当中,之后对这个list中的数据进行排序,即修改order这个字段。之后再把这些数据存进去。