分享
 
 
 

ASP把无限级分类生成数组

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

把无限级分类循环出来确实是一件头疼的事情。

比如,我们要循环出一个SELECT,或一个TABLE,要写一大堆判断。

有没好点的办法呢?

我的做法是生成数组,可以重复调用,直接循环数组就行了。

为了方便,我把它写成了类。

class.asp

返回所有分类的数组,并按顺序排列

有4个属性:

set aa=new classlist

aa.id="id"//编号的名称

aa.classname="classname"//分类名称

aa.pid="pid"//父ID名称

aa.db_name="class"//表名

list=aa.arrylist()

<%

class classlist

private c_id

private c_db_name

private c_pid

private c_classname

public property let id(str)

c_id = str

end property

public property let db_name(str)

c_db_name = str

end property

public property let pid(str)

c_pid = str

end property

public property let classname(str)

c_classname = str

end property

dim list()

dim i,n

Private Sub Class_Initialize()'初始化变量

i=0

n=0

End Sub

public function classarry(thisid,pid)'取得下级ID

if pid>0 then

sql="select * from "&c_db_name&" where "&c_pid&"="&thisid

else

sql="select * from "&c_db_name&" where "&c_id&"="&thisid

end if

set rs_c=conn.execute(sql)

n=n+1

do while not rs_c.eof

list(0,i)=rs_c(c_id)'装入数组中

list(1,i)=rs_c(c_classname)

list(2,i)=n

'n=n+1

i=i+1

thisid=classarry(rs_c(c_id),1)'这里递归调用,直到最后一个子类

rs_c.movenext

loop

n=n-1

rs_c.close

end function

public function arrylist()'循环出所有根类

set rs_c=conn.execute("select count("&c_id&") from "&c_db_name)

lenght=rs_c(0)

rs_c.close

redim list(2,lenght)'设置数组

set rs1=conn.execute("select "&c_id&" from "&c_db_name&" where "&c_pid&"=0")

do while not rs1.eof

call classarry(rs1(c_id),0)

'n=1

rs1.movenext

loop

rs1.close

arrylist=list

end function

end class

%>

实例测试:

表CLASS

字段

id:自动编号

classname:名称

pid:父ID

test.asp

<!--#include file="class.asp"-->

<%

Set conn=Server.CreateObject("ADODB.connection")

Set Rs = Server.CreateObject("ADODB.Recordset")

StrDSN = "Driver={Microsoft Access Driver (*.mdb)}; DBQ="

StrDSN = StrDSN & Server.MapPath("test.mdb")

conn.Open strDSN

function ins(num)

str=""

for ii=1 to num

str=str&"|-"

next

ins=str

end function

set aa=new classlist

aa.id="id"

aa.classname="classname"

aa.pid="pid"

aa.db_name="class"

list=aa.arrylist()

response.write "<table border=1><tr><td>ID</td><td>名称</td><td>第几类</td></tr>"

for j=0 to ubound(list,2)

response.write "<tr><td>"&list(0,j)&"</td><td>"&list(1,j)&"</td><td>"&list(2,j)&"</td></tr>"

next

response.write "</table>"

'response.write list(1,3)

%>

<select name="">

<% for i=0 to ubound(list,2)%>

<option value=""><%

response.write ins(list(2,i))

response.write list(1,i)%></option>

<%next%>

</select

循环结果:

www.hubro.net/code/class/test.asp

基本上可以满足一般的需要了!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有