挑战您的思路,asp非高手勿入!!

loveasp007 2005-12-24 02:15:05
我在access库中有如下字段:

id lanmu(栏目) prentlm(父栏目) deep(层数) .....(可能还有,但我不知该加什么字段)
.........
.........
实现的效果:(用asp实现下面的图)

首页

简介 产品 文化 办公 (.....不受限制,根据后台)

公司 关怀 一 二 三 四 ....................(......不受限制,根据后台)

..............................
...............................

(有受限制,根据后台)


我想显示这样的结果,,根据数据库里,,好像用到什么遍历函数,,请大家给个思路,还有数据库里该有哪些相关的字段!!!


越全越好,,最好直接贴asp代码!!不胜感激!!

...全文
643 48 打赏 收藏 转发到动态 举报
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveasp007 2005-12-27
  • 打赏
  • 举报
回复
不谦虚???唉,,百口莫辩了。。

先结贴,,感谢大家。。如果解不出来,再请教大家
rawjim 2005-12-26
  • 打赏
  • 举报
回复
To: nittystone(没有想法)

你所强调的“方便”,我并不那么认为。
如果父子关系很多,而且这些关系增,删,修改的频率高,维护的麻烦程度会更大。

就拿一个简单的删除来说,假定有八层,你需要删掉第四层的某项,很显然,这个时候你需要删除它的所有子项,你的SQL写起来就不是那么爽了。
还有就是ID编号的问题,难道都是手工编号?
matrixy 2005-12-26
  • 打赏
  • 举报
回复
呵呵

这儿有个车间主任啊...
nittystone 2005-12-26
  • 打赏
  • 举报
回复
以前地一点经验 这个我都是用在组织架构 权限等地方

里边设计地父子关系地地方太多用编号分离是很方便地.
rawjim 2005-12-26
  • 打赏
  • 举报
回复
To: nittystone(没有想法)

你的说很考验大脑是什么意思?难道说很费脑子?
我也想过你这种方法,但最终还是否决掉了。
原因有两个
1。它的逻辑性没有上面说的那个强
2。它最大支持999个,其实你也可以扩成更多,但它很不保险,对于用户,有时候他的项数量是不可预测的,比如说产品分类。一般情况,他可能就几十个,但它也可能是个庞大的数字。遇到这种情况,系统可能就会挂了。这种局限性的东西,有时候会给系统带来很致命的影响。
ak30000 2005-12-26
  • 打赏
  • 举报
回复
是需要使用同一个表先取所有列的名称然后再取纪录么?
以前有人做过,你在旧贴找一下
nittystone 2005-12-26
  • 打赏
  • 举报
回复
我一直认为这种树的设计是很差的设计
引用
这三个字段分别是
ItemID ItemName ParentItemID.
如果你确定栏目的名称不会重复,那么两个字段就可以了。ItemID ParentItemID
而那个层数的字段是多余的。


虽然在oracle中 支持了递归语法,但开发中使用起sql来递归仍然很考验大脑的一种方法

我对树的设计是这样的,一个大表
烤编号来分开树行结构
一级是
001
二级是
001.001
三级是
001.001.001
这样的开发虽然每个叶子节点只支持999个,但开发时会方便太多.
zhanghongwen 2005-12-26
  • 打赏
  • 举报
回复
我是没听懂在说什么
indexroot 2005-12-26
  • 打赏
  • 举报
回复
如果用支持公共表表达式(common table expression,CTE)的数据库(SQL server 2005/oracle/DB2)
可以用
with MySub(Id,GroupId)
as
(
select Id,Id as GroupId
from Cat
where ParentId=1
union all
select B.Id,A.GroupId
from Cat as B,MySub as A
where B.ParentId=A.Id
)
select * from MySub


Access不支持CTE可以看:
无限关联多级目录 Access&Sqlserver解决方案
http://www.blueidea.com/bbs/newsdetail.asp?id=2301520
patchclass 2005-12-26
  • 打赏
  • 举报
回复
如此简单还乱起标题!!!
zy51 2005-12-25
  • 打赏
  • 举报
回复
无限级分类? 递归不就得了. id(栏目id),sortid(所属栏目id),name(栏目名字)

sub sortList(selec)
sql="Select * From 表 where sortid="&selec&""
Set Rs=Conn.Execute(sql)
do while not Rs.eof
Response.write string(ii," ")&rs("name")
ii=ii+1
sortList rs("id")
ii=ii-1
rs.movenext
loop
Set Rs = Nothing
end sub

调用:
<%sortList(0)%>
skycuilin 2005-12-25
  • 打赏
  • 举报
回复
id 编号
fatherid 父类编号
rate 等级

用递归输出就好了,还可以加一个权限识别列,以确定该类别是否有读写权限
zhangshengjinggg 2005-12-25
  • 打赏
  • 举报
回复
递归
这几天刚做个无限分级的产品展示系统,跟这个问题一模一样
字段这四个够了,我就是用了这四个的
EnginePlus 2005-12-25
  • 打赏
  • 举报
回复
学习 帮顶、!
lishoujun 2005-12-25
  • 打赏
  • 举报
回复
这个问题好象不是很难哎
超级大笨狼 2005-12-25
  • 打赏
  • 举报
回复
身材不高手不高
bulletCoderHope 2005-12-25
  • 打赏
  • 举报
回复
哈哈,我现在可能不会,但是以前会,可我绝对不是高手,哈哈
dengfvip 2005-12-25
  • 打赏
  • 举报
回复
年轻人不谦虚哇
rawjim 2005-12-25
  • 打赏
  • 举报
回复
另外,要显示所有内容,不是用什么遍历,而是递归。
rawjim 2005-12-25
  • 打赏
  • 举报
回复
我觉得你的态度很不谦虚,做事情,我觉得心态很重要。
虽然你表达问题的方式一团糟,但我还是明白你的意思了。

你的意思是:
你想设计一个表,这个表能够清晰的表达项的层次关系,所有的项是都是有且仅有一个父节点(根结点除外,根节点没有父节点)。它其实就是一棵抽象的树。然后通过ASP代码可以管理和根据要求显示。

3个字段就可以了,不需要四个字段

这三个字段分别是
ItemID ItemName ParentItemID.
如果你确定栏目的名称不会重复,那么两个字段就可以了。ItemID ParentItemID
而那个层数的字段是多余的。


加载更多回复(27)

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧