2015-07-21 76 views
0

我一直在ASP VBScript中開發CMS,現在正在嘗試添加頁面排序功能,以便管理員可以以他們喜歡的任何方式排列頁面。排序CMS頁面

我曾嘗試在數據庫中添加一個sort_id列,但由於有許多不同級別的頁面,因此它將我拋棄。我也嘗試使用slu 012列(即parent_id/id/id/id)來確定級別和父級ID,但無法使其工作。

我需要能夠對每個父ID以及其中的子頁面進行排序,並根據此順序將其打印出來。

我要尋找一個在正確的方向上推,因爲我一直在這一個現在一邊掙扎......

我使用DB Microsoft Access和目前擁有的列:

id, page_parent, page_name, page_content 

回答

1

我在Access(2010)數據庫中創建了一個表,它幾乎可以完成您想要的任務。這個概念是我需要能夠存儲可能具有屬性的查找列表。它的工作方式是父母身份(FK)將指向表中其他地方(到PK)的記錄。通過節點列表.1.2.34的形式提供額外的幾個字段來提供節點管理。 n節點級別在當前節點的樹中記錄級別(儘管可以通過計算列表中有多少個點,點數爲1來跳過此級別)。 節點列表將記錄所有步驟備份樹到最終的祖先。

enter image description here

通過將以下更新之前宏觀數據的整個過程都是自動化的......

enter image description here

排序然後可以通過添加排序場進行(數字或任何)到最後。任何查詢可以被告知主要在排序字段,然後按字母順序排列(在我的情況下)代碼字段。

0

如果您使用的是SQL Server,則可以使用遞歸查詢來返回類似於結構的樹,但這在Access中不受支持。

您可能需要添加自己的列,每當樹結構發生變化時您都可以自行計算。

我會爲顯示順序添加一列(數字),然後允許在每個級別(父母和子女)設置它。

然後,我會創建並填充第二列(varchar/string),它將計算的位置存儲在樹結構中。這將包括每個父母的顯示訂單值和該項目的顯示順序。

要按此列排序,您需要顯示訂單號具有固定長度。

此列的計算的值的一個實例是(顯示順序5位在本實施例中的最大長度):

00001/00010/00003 

該實施例產品在第三位置的它的父,這是在第十位置它的父母,這是在頂級的第一位。

如果您願意,您可以使用任何分隔符或不分隔符。

然後你可以改變你的SQL order by子句來使用這個計算列。