ASP网页编程之ASP把无穷级分类天生数组
因为现在数据库都使用标准的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服务器,所以性能稳定性也一般 下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。 ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。 Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write 接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
页:
[1]