1

我的嵌套集表如下。

 create table depts (
  id int identity(0, 1) primary key
  , lft int
  , rgt int
  , name nvarchar(60)
        , abbrv nvarchar(20)
 );

测试部门。

insert into depts (lft, rgt, name, abbrv) values (1, 14, 'root', 'r');
insert into depts (lft, rgt, name, abbrv) values (2, 3, 'department 1', 'd1');
insert into depts (lft, rgt, name, abbrv) values (4, 5, 'department 2', 'd2');
insert into depts (lft, rgt, name, abbrv) values (6, 13, 'department 3', 'd3');
insert into depts (lft, rgt, name, abbrv) values (7, 8, 'sub department 3.1', 'd3.1');
insert into depts (lft, rgt, name, abbrv) values (9, 12, 'sub department 3.2', 'd3.2');
insert into depts (lft, rgt, name, abbrv) values (10, 11, 'sub sub department 3.2.1', 'd3.2.1');

我的网页内容表如下。

 create table content (
  id int identity(0, 1)
  , dept_id int
  , page_name nvarchar(60)
  , content ntext
 );

测试内容。

insert into content (dept_id, page_name, content) 
 values (3, 'index', '<h2>welcome to department 3!</h2>');
insert into content (dept_id, page_name, content) 
 values (4, 'index', '<h2>welcome to department 3.1!</h2>');
insert into content (dept_id, page_name, content) 
 values (6, 'index', '<h2>welcome to department 3.2.1!</h2>');
insert into content (dept_id, page_name, content) 
 values (2, 'what-doing', '<h2>what is department 2 doing?/h2>');

我正在尝试根据给定的 url 查询正确的页面内容(来自内容表)。我可以通过根部门轻松完成这项任务。然而,事实证明,查询具有多个深度的部门有点困难。例如:

http://localhost/departments.asp?d3/ (Should return <h2>welcome to department 3!</h2>)
http://localhost/departments.asp?d2/what-doing (Should return <h2>what is department 2 doing?</h2>)

我不确定这是否可以在一个查询中创建,或者是否需要某种递归函数。此外,如果最后一个 / 之后没有任何内容,则假设我们想要索引页面。

这基本上是一个小型 CMS 的后端。所以我的想法是,您可以创建具有与类别相关联的唯一名称的新页面。在我的情况下,将是部门。我环顾四周,在 ASP Classic 的 CMS 方面没有太多选择。

如何实现?也欢迎提出意见和建议。

谢谢你。

4

1 回答 1

2

我做了与此非常相似的事情(PHP/MySQL 除外)。我面前没有代码,但如果您认为它可能有帮助,我很乐意提供给您:

我相信我的方法的主要区别在于我没有一个带有嵌套集的单独表,我只是将内容和 lft/rgt 放在一个表中。内容管理允许用户尽可能多地创建内容层次结构,因此该网站可能会变成如下内容:

http://site/tier1-page
http://site/tier1-page/tier2-pageA
http://site/tier1-page/tier2-pageB
http://site/tier1-page/tier2-pageB/tier3-pageI
http://site/tier1-page/tier2-pageB/tier3-pageII

...等等。

于 2010-06-24T00:40:31.137 回答