2012-10-10 624 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

相關問題