3

任何人都可以帮我订购在 php 中完成的页面自定义 CMS 页面管理器吗?

我有一个页面(文章)管理的数据库表。id - parentId - content- title - order - 等等

我在 html 表中选择并将其显示为树顺序(同样是父级然后是子级).. 我在其中放置了编辑/删除选项以及一列来对页面进行排序,我想要带有向上/向下箭头的排序列.. 当单击它应该交换数据库表的相应 Order 字段(它包含一些数字)。问题是这里它包含父母和它的孩子,所以箭头应该以正确的顺序放置......即不要交换孩子和父母。只有具有相同父 ID 的列(如果有)应该被交换..

4

1 回答 1

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)

如果你点击 entry 789(id:5),给它一个比 entry 更高的顺序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
于 2012-10-10T12:50:18.283 回答