仓酷云

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

[学习教程] ASP编程:论坛树状纪录表的仓库睁开

[复制链接]
莫相离 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:22:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
ASP是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊!因为事情缘故原由,触及到一个树状寄存纪录的表,请求程序中把树状表全体睁开,并输入响应的数据热荨S捎谏婕暗酱酥植僮鞯牡胤胶芏啵热缤缟系"论坛"就是典范的接纳树状寄存纪录的表,特此收拾出来与人人分享。
在良多材料都有先容睁开树状纪录的程序,可是良多是接纳递回的办法。我晓得,递回的办法逻辑对照复杂,实践操纵起来对照简单。可是递回有一个最年夜的弱点就是占用资本太多,速率太慢。假如在互联网的"论坛"上接纳此种办法,在表纪录良多的情形下将是一个十分严峻的成绩。上面的程序在笔者的事情中办理了一个年夜成绩并将使用于自己小站(yuking.126.com)的论坛。
我这里接纳速率十分快的仓库来完成这类操纵,可是操纵起来绝对而言难度加年夜。我们就以论坛纪录表为例解说这一历程,起首懂得一下表布局:

1、表布局(article)
selfint本纪录ID号
fatherint父纪录ID号
titlechar贴子题目
authorchar贴子作者
datetimedate发贴日期工夫
hitsint点击数
replyint复兴数
.....依据详细的情形我们还能够有更多的字段
1)关头申明:self是纪录本纪录的ID号,这应当是一个主动增加的字段,不充许反复。father是纪录本结点的父结点ID号的字段,若该纪录内容为"回贴"此字段值应当为"主贴"的ID号。若该纪录为"主贴"则它的父结点应当为"0"
2)以下两笔记录是父子纪录:
selffathertitleauthor.....
10谁能帮帮我三脚猫
21我能帮你甚么忙吗?网上飞

2、操纵办法
起首,我们读出一切父结点为"0"的纪录也就是"主贴",一切放进仓库中。然后输入位于栈顶的一笔记录("主贴")数据,并清空栈顶,栈下移一格。接着查找一切父结点为该栈项结点("主贴")的纪录("回贴"),也一切放于栈顶。注重到没有,就这两步我们就完成了把一条父纪录输入并睁开其子结点的事情。余下的事情只是顺次类推罢了了,直到栈为空为止。
固然实践操纵时大概还会有一些请求,好比请求失掉纪录的层数,复兴数等等成绩,我们只需略加改善就可以完成。

3、这里是收拾后的原代码
<%
setRS=server.CreateObject("ADODB.Recordset")

sql_text="select*fromarticlewherefather=0orderbydatetimedesc"
RS.Opensql_text,Bbs_ConnectionString查找一切父结点为0的结点,即"主贴"。

DimStack(100,8)界说仓库,我这里是100(8是指每一个栈元素分离寄存8个字段值)。可依据实践情形界说仓库巨细,能够按这个公式盘算"最多层数*最多睁开数"。
whilenotRs.eof
Stack(0,0)=RS("self")
Stack(0,1)=RS("father")
Stack(0,2)=RS("title")
Stack(0,3)=RS("author")
Stack(0,4)=RS("datetime")
Stack(0,5)=RS("hits")
Stack(0,6)=RS("reply")
Stack(0,7)=0
Top=1
dountilTop=0
Sql_text="select*fromarticlewherefather="&StackTop&"
RS1.OpenSql_text,MyConn查找一切父结点为栈顶结点的纪录
输入栈项元素,我这里是间接输入,实践做的时分能够发生表格等等效果
fori=0to7
Response.writestack(top-1,i)
next

ParentLevel=stack(top-1,7)清空仓库之前取得父纪录的层数
fori=0to7清空仓库项部
Stack(top-1,i)=""
next
Top=top-1栈顶向下挪动一格
将查找到的栈项结点"派生出"的全体子纪录存进仓库
WhilenotRS1.eof
Stack(Top,0)=RS1("self")
Stack(Top,1)=RS1("father")
Stack(Top,2)=RS1("title")
Stack(Top,3)=RS1("author")
Stack(Top,4)=RS1("datetime")
Stack(Top,5)=RS1("hits")
Stack(Top,6)=RS1("reply")
Stack(Top,7)=ParentLevel+1
Rs1.movenext
Top=Top+1栈项向上挪动
Wend
Rs1.close
loop
Rs.MoveNext挪动到下一笔记录
Wend
Rs.close
setRs=nothing
setRs1=nothing
%>

</p>优点:简单易学、开发速度快、有很多年“历史”,能找到非常多别人做好的程序来用、配合activeX功能强大,很多php做不到的asp+activeX能做到,例如银行安全控件
老尸 该用户已被删除
沙发
发表于 2015-1-20 09:44:58 来自手机 | 只看该作者
Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-29 06:34:13 | 只看该作者
我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
小妖女 该用户已被删除
地板
发表于 2015-2-5 23:19:07 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。
变相怪杰 该用户已被删除
5#
发表于 2015-2-14 04:33:55 | 只看该作者
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
兰色精灵 该用户已被删除
6#
发表于 2015-3-11 16:47:15 | 只看该作者
ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
莫相离 该用户已被删除
7#
 楼主| 发表于 2015-3-19 02:20:22 | 只看该作者
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
再现理想 该用户已被删除
8#
发表于 2015-3-27 04:11:37 | 只看该作者
掌握asp的特性而且一定要知道为什么。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-10-1 05:04

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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