有人可以帮我订购自定义CMS pagemanager在php中完成的页面吗?
我有一个数据库表,其中页面(文章)管理。 id - parentId - content- title - order - etc
我在html表中选择并显示这个作为树顺序(父母然后同样的孩子).. 我把编辑/删除选项和一列用于ORDER页面,我希望订单栏有向上/向下箭头..当点击它时,它应该交换数据库表的相应Order字段(它包含一些数字)。 问题是,它包含父项及其子项,因此箭头应按正确顺序放置...即不要交换子项和父项。只应该交换具有相同父ID的列(如果有)..
答案 0 :(得分:1)
由于您没有提供代码或数据库结构,我将尝试解释一个基本的订购系统,我希望您能了解如何解决您的问题。
想象一下这些是你的mysql表中的数据:
id - parent - title - order
1 - 0 - abc - 1
2 - 0 - xyz - 2
3 - 1 - 123 - 1
4 - 1 - 456 - 3
5 - 1 - 789 - 2
如果你这样做一个查询:
SELECT ... ORDER BY order, id ASC
你有一棵这样的树:
- root (id:0)
|
|___ abc (id:1)
| |___ 123 (id:3)
| |___ 789 (id:5)
| |___ 456 (id:4)
|
|___ xyz (id:2)
如果你点击条目789
(id:5),为了给它一个比条目123
更高的顺序,你的SQL查询应该是这样的:
UPDATE table SET order = order + 1 WHERE order = order - 1 AND parent = 1
下一个查询:
UPDATE table SET order = order - 1 WHERE id = 5
你的树应该是这样的:
- root (id:0)
|
|___ abc (id:1)
| |___ 789 (id:5)
| |___ 123 (id:3)
| |___ 456 (id:4)
|
|___ xyz (id:2)
如果你需要一种更灵活的方式,你也可以使用这样的东西:
(这里我假设您有100行从1到100排序,并且您希望将id:33移动到id:51之后的位置)
UPDATE table SET order = order + 1 WHERE order >= 51
UPDATE table SET order = 51 WHERE id = 33
UPDATE table SET order = order - 1 WHERE order BETWEEN 33 AND 50