通过php中的上/下箭头进行页面排序

时间:2012-10-10 11:00:13

标签: php mysql

有人可以帮我订购自定义CMS pagemanager在php中完成的页面吗?

我有一个数据库表,其中页面(文章)管理。 id - parentId - content- title - order - etc

我在html表中选择并显示这个作为树顺序(父母然后同样的孩子).. 我把编辑/删除选项和一列用于ORDER页面,我希望订单栏有向上/向下箭头..当点击它时,它应该交换数据库表的相应Order字段(它包含一些数字)。 问题是,它包含父项及其子项,因此箭头应按正确顺序放置...即不要交换子项和父项。只应该交换具有相同父ID的列(如果有)..

1 个答案:

答案 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