2012-10-10 66 views
3

任何人都可以帮助我订购页面自定义CMS页面管理器在PHP中完成?页面排序按向上/向下箭头在php

我有一个数据库表中的页面(文章)管理。 ID - parentId的 - 内容 - 标题 - 顺序 - 等

我选择在HTML表格中显示这是一个树形结构顺序(父母子女,然后同样).. 这里我把编辑/删除选项,同时一列要订购在页面上,我想用向上/向下箭头的顺序列。当点击它时,它应该交换数据库表(它包含一些数字)的相应的Order字段。 问题是,它包含父母及其子女,所以箭头应按正确的顺序放置......即不要交换孩子和父母。只有具有相同父ID的列(如果有)应该交换。

回答

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),给它一个比条目更高的顺序,您的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行ord ERED从1到100,你要移动ID:ID后33的地方: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 
+0

马赫迪嗨, 感谢您的答复,让我尝试一下,回复你.. – shijin

+0

@shijin欢迎!如果它不适合你,那么提供更多细节也会更好...... :) – Mahdi

相关问题