仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 628|回复: 8
打印 上一主题 下一主题

[学习教程] ASP网页编程之ASP把无穷级分类天生数组

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:13:00 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQLServer还有更多的扩展,可以用存储过程,数据库大小无极限限制。数组把无穷级分类轮回出来的确是一件头疼的事变。
好比,我们要轮回出一个SELECT,或一个TABLE,要写一年夜堆判别。
有没好点的举措呢?
我的做法是天生数组,能够反复挪用,间接轮回数组就好了。
为了便利,我把它写成了类。
class.asp
前往一切分类的数组,并按按次分列
有4个属性:
setaa=newclasslist
aa.id="id"//编号的称号
aa.classname="classname"//分类称号
aa.pid="pid"//父ID称号
aa.db_name="class"//表名
list=aa.arrylist()
<%
classclasslist
privatec_id
privatec_db_name
privatec_pid
privatec_classname
publicpropertyletid(str)
c_id=str
endproperty
publicpropertyletdb_name(str)
c_db_name=str
endproperty
publicpropertyletpid(str)
c_pid=str
endproperty
publicpropertyletclassname(str)
c_classname=str
endproperty

dimlist()

dimi,n
PrivateSubClass_Initialize()初始化变量
i=0
n=0
EndSub


publicfunctionclassarry(thisid,pid)获得上级ID
ifpid>0then
sql="select*from"&c_db_name&"where"&c_pid&"="&thisid
else
sql="select*from"&c_db_name&"where"&c_id&"="&thisid
endif
setrs_c=conn.execute(sql)
n=n+1

dowhilenotrs_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

endfunction

publicfunctionarrylist()轮回出一切根类
setrs_c=conn.execute("selectcount("&c_id&")from"&c_db_name)
lenght=rs_c(0)
rs_c.close
redimlist(2,lenght)设置数组
setrs1=conn.execute("select"&c_id&"from"&c_db_name&"where"&c_pid&"=0")
dowhilenotrs1.eof
callclassarry(rs1(c_id),0)
n=1
rs1.movenext
loop
rs1.close
arrylist=list
endfunction

endclass
%>
实例测试:
表CLASS
字段
id:主动编号
classname:称号
pid:父ID
test.asp

<!--#includefile="class.asp"-->
<%
Setconn=Server.CreateObject("ADODB.connection")
SetRs=Server.CreateObject("ADODB.Recordset")
StrDSN="Driver={MicrosoftAccessDriver(*.mdb)};DBQ="
StrDSN=StrDSN&Server.MapPath("test.mdb")
conn.OpenstrDSN

functionins(num)
str=""
forii=1tonum
str=str&"|-"
next
ins=str
endfunction

setaa=newclasslist
aa.id="id"
aa.classname="classname"
aa.pid="pid"
aa.db_name="class"
list=aa.arrylist()

response.write"<tableborder=1><tr><td>ID</td><td>称号</td><td>第几类</td></tr>"
forj=0toubound(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.writelist(1,3)
%>
<selectname="">
<%fori=0toubound(list,2)%>
<optionvalue=""><%
response.writeins(list(2,i))
response.writelist(1,i)%></option>
<%next%>
</select

轮回了局:
www.hubro.net/code/class/test.asp
基础上能够满意一样平常的必要了!
asp可以使用微软的activeX使得网页功能无比强大,不过安全性也较差,而且是基于的windows服务器,所以性能稳定性也一般
再现理想 该用户已被删除
沙发
 楼主| 发表于 2015-3-5 09:49:00 | 显示全部楼层
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-2 14:19

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表