仓酷云

标题: ASP编程:跟我学做树型菜单(三) [打印本页]

作者: 仓酷云    时间: 2015-1-16 23:35
标题: ASP编程:跟我学做树型菜单(三)
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。菜单续上篇
上一篇中我们已在网页中完成了静态的菜单。我们利用的是JS剧本来完成的。
可是菜单的内容是手工写的,如今我们要用ASP程序来从数据库中读出这些数据,并
在程序中天生这些菜单。

1、用递回的体例天生菜单
在讲到从数据库中读取数据并天生菜单的时分,我们先往返忆一下第一篇中提到
的数据库布局。数据表(treemenu)中,我们纪录了每一个菜单的父菜单的ID,假如这
ID是0,那末它就是根菜单;而且纪录了每一个菜单的子菜单的个数:chi_id也就是说
关于恣意一个菜单,我们都能够用
select*fromtreemenuwherepar_id=以后ID
如许的SQL语句来找到它的子菜单。而要找就任意一个菜单的父菜单,能够用:
select*fromtreemenuwhereid=以后par_id
了解了这两个SQL语句,我们来讲说递回的思绪,递回的体现是一个函数大概子程序
又挪用了本人自己。如今我们界说一个子程序,叫distree(id),它的感化是显现ID为id的
菜单及一切的子菜单。然后我们挪用distree(0)就能够显现一切的根菜单。看看这个子程序
的复杂算法思绪:
<%
subdistree(id)
找到ID字段为id的一切纪录
显现这个纪录,并记下它的id(记为id2)
显现它的子菜单及子菜单的子菜单:disptree(id2)这里用到了递回
直到停止
endsub
%>


2、完成递回函数
如今我们来完成这个递回的函数。上面是已完成的函数,正文写在内里。
<%
subdistree(id)界说子程序
界说变量,注重,这些变量必定要界说,才是部分的变量,不然将会是全局变量
dimsql,rs,chid,i
上面这句界说SQL查询语句,获得父菜单为id的子菜单
sql="select*fromtreemenuwherepar_id="&id
searchtablemy,sql,rs查询表
ifrs.eofthenexitsub假如没有一个纪录,就加入子程序
ifid=0then假如是根菜单,要别的处置,由于它没有后面的毗连图
response.write"<tablewidth=100%border=0cellspacing=0cellpadding=0>"&br
else
假如不是根菜单,就显现全体。个中cellid是菜单地点表的名字,定名办法按上一篇
response.write"<tableid="&cellidc&"style=display=none"&_
"width=100%border=0cellspacing=0cellpadding=0>"&br
endif
totalrec=rs.recordcount失掉全体的纪录数,这里是按实践的数目,也能够用rs("chi_id")
fori=1tototalrec用一个轮回来显现一切的纪录
ifid=0then假如是根菜单,就用另外一个图标
ico="images/home.gif"
else不然,就用文件夹的图标
ico="images/fc.gif"
endif
chid=rs("chi_id")失掉它的子菜单的数目
ifchid=0then假如它没有子菜单,毗连图就用没有"+"号的。
ifi=totalrecthen假如是最初一个子菜单,就用90度的毗连图
ph="images/line_cco.gif"
else
ph="images/line_co.gif"不然就用T字型的毗连图
endif
response.write"<trheight=16>"&br输入一行,来显现一个纪录(菜单)
ifid0then假如是不根菜单,就显现毗连图,ph是下面天生的毗连图的文件名
response.write"<tdwidth=16height=16>"&br
response.write""&rs("txt")&"</a>"
response.write"<ahref="&scr&"?action=add&id="&rs("id")&">增</a>"
response.write"<ahref="&scr&"?action=del&id="&rs("id")&">删</a>"
response.write"<ahref="&scr&"?action=mod&id="&rs("id")&">改</a>"&br
response.write"</td>"&br
response.write"</tr>"&br
else假如它另有子菜单,就用"+"号的毗连图
ifi=totalrecthen假如是最初一个子菜单,就用没用后续菜单的毗连图
ph="images/ctc.gif"
else
ph="images/cc.gif"不然就用有后续菜单的毗连图
endif
l=l+1l暗示行,
r=r+1r暗示列
cellid="L"&l&"R"&r天生名字
cellida="L"&l&"R"&r天生毗连图的名字
cellidb="L"&l&"R"&r+1天生图标的名字
cellidc="L"&l+1&"R"&r+1天生子菜单的名字
ifid=0then假如是根菜单,就间接输入这个子菜单
response.write"<trheight=16width=100%>"&br
else不然,要先输入毗连图
response.write"<trheight=16>"&br
endif
ifid0then不是根菜单,输入毗连图
response.write"<tdwidth=16height=16>"&br
response.write"<imgid="&cellid&"显现完后停止表格
closetablers
endsub
%>


如今把前次的HTML文件改写成ASP程序,把文件名改一下,再把本来的菜单部分删除,到场下面的子程序
再到场上面这些语句就好了。记着不要把JS剧本删除!
<!--#includefile="operation$db.asp"-->
<%
opendbmy
dimi,l,r,cellid,ph
dimcellida,cellidb,cellidc
l=0
r=0
br=vbcrlf
distree(0)
%>

到这里,已能够显现菜单了,固然,假如你要改的话,如今只能到数据库里往改。只需再加上
复杂的功效,就能够举行办理了。下一篇我们给它加上增添、删除、修正的功效。</p>当然了,现在国内CRM厂商的产品与其说是CRM,但从至少从我的角度分析上来看,充其量只是一个大型的进销存而已了,了解尚浅,不够胆详评,这里只提技术问题
作者: 小妖女    时间: 2015-1-20 10:02
ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
作者: 简单生活    时间: 2015-1-20 13:02
先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
作者: 只想知道    时间: 2015-1-25 06:33
不能只是将它停留在纸上谈兵的程度上。
作者: 海妖    时间: 2015-2-2 14:41
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
作者: 兰色精灵    时间: 2015-2-7 22:58
运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
作者: 小女巫    时间: 2015-2-23 14:19
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
作者: 莫相离    时间: 2015-3-7 09:12
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
作者: 深爱那片海    时间: 2015-3-14 17:19
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
作者: 愤怒的大鸟    时间: 2015-3-21 12:34
运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2