5天学会asp
2018-09-06 11:07
呵呵,看到网上有人写了10天学会asp,偶也想写一个,他既然叫10天,那我就5天吧,呵呵,新手多看看,高手指出错误,不要笑话偶啊!知
识只有共享才能发展,不要吝啬你的知识!!!!
好了我们闲话少说现在就开始吧!
首先,我先把ASP说一下,asp就是ActiveServerPages的简写,
我们为了方便理解那,就把asp想成是插入到HTml中的一种脚本语言吧,这样理解起来方便。
书上都是以helloworld的代码开始的,我们也这样开始吧!
这里我们就开始以示例讲解了:
〈html〉
<title>helloworld</title>
<body>
<%response.write(helloworld)%>
</body>
</html>
保存成test.asp,调试一下就能看到helloworld了。
这里先让大家看看他是怎么样插入到HTML中的(asp程序是放在<%%>中间的)
当然我们也可以在response.write中输出HTML标记,比如:
<%response.write<fontsize=20color=red>你好</font>%>
就能看到一个红色的20号的你好
接下来我们就说
asp中有六大内置对象,分别是:
Request:负责从用户端接受信息
Response:传递信息给用户
Server:控制asp运行环境
session:负责存储个别用户信息
Application:负责存储数据以提供多个用户的使用
objectcontext:可提供asp程序直接配合MTS进行分散事物处理
这其中我们就常用的就是:Request,Response,Server,session,Application
在本文中会逐一讲到,
刚才我们用了六大内置对象中的Response的write方法输出了helloworld
下面我们就用一个例子来讲解request和response的用法:
首先,我们要用到html的form标签来传递值:
一,我们先做个表单页面,用来输入数据,这个页面就叫login.asp
<html>
<title>request和response的演示(值的传递和输出)</title>
<body>
<formname=form1action=checklogin.aspmethod=post>
<center>
<tablewith=500>
<tr>
<tdcolspan=2align=center><fontsize=5color=blue>用户登录入口</font>
</td>
</tr>
<tr>
<td><fontsize=2>用户名:</font></td>
<td>
<inputname=usernametype=textmaxlength=20>
</td>
</tr>
<tr>
<td><fontsize=2>密码:</font></td>
<td>
<inputtype=passwordname=passwordmaxlength=20>
</td>
</tr>
<tr>
<tdcolspan=2align=center>
<inputtype=submitvalue=登录>
<inputtype=resetvalue=重置>
</td>
</tr>
</table>
</center>
</form>
</body>
</html>
二,我们在做一个页面来接受这些数据,这个页面就叫checklogin.asp
<%
-------------------为防止出错我们定义username和password----------------
dimusername
dimpassword
--------用request的form方法来接受login.asp页面传来的值,并付值给我们定义的username和password
username=request.form(username)
password=request.form(password)
---------判断传来的值是不是空值
ifusername=then
用response的write的方法输出一个脚本
response.write<script>alert(用户名不能为空)</script>
response.end
endif
ifpassword=then
response.write<script>alert(密码不能为空)</script>
response.end
endif
----------判断用户名和密码是不是一样的,如果一样的输出登陆成功并把session的标志给这个用户,否则就输出登陆失败
ifusername=adminandpassword=adminthen
response.write登陆成功
session(loginok)=username
else
response.write登陆失败
重定向到login.asp
response.redirectlogin.asp
endif
%>
这里我们用到了request.form的方法(接受数据)
response的write(输出数据)和redirect(重定向)
session的会话,这里我先简单的说说session的作用吧,
就拿我的同学录来说吧!这里会判断用户的级别和权限(如:没有审核同学,通过审核的同学,班级管理员)如果用户登陆成功了,
session就和server产生了会话,没有审核同学就付值为session(userlevel)=1,通过审核的同学就付值为session(userlevel)=2
班级管理员就付值为session(userlevel)=3,这样就有效的区别的用户的权限和级别。
类似的做用的还有cookies,它也有这样的作用,不同的是cookise是产生到客户端的。。。。
我在这个例子里主要讲解了request和response的用法,其实他们还有一些属性和方法,
这里我只是讲解了常用的,希望大家有空看看这里我没有提到的属性方法
这个例子我没有把用户和密码放到数据库中是为了方便大家的理解,
下一节我们将讲解怎么样连接数据库和实现操作数据库的。。。。
-----------------------------------------------------------------------------------------------------------------------
5天搞定asp
第二天
今天我们主要讲解ASP中常用的SQL语句,和怎样在页面中执行SQl语句。。。
其实常用的语句无外乎数据的“增,删,改”好象所有的数据处理程序中都有这几种操作,下面我们先写sql语句,<如果您需要了解更多的请
看我的的SQl语句经典或看看SQL的书籍>
-----(一)--查询---------
1,首先我们要做第一个<查询>,这是SQl中最基本的语句了,
select*from[表名]where[条件]orderby[条件]desc
其中,desc降序,默认是asc升序,
例子:select*fromnewswherenews_id=&news_id&orderbynews_iddesc
意思就是查询news表中的*代表所有数据,条件是news_id等于news_id然后按照news_id的降序排列
在查询里还能用到groupby分组排序等等,这里就不系说了。
2,count()函数用来计算记录的行数。
例:selectcount(*)fromnews
计算数据库中有多少行
3,sum()函数用来计算表达试中的项目和。
例:selectage,sum(number)frompersonwhereage>20groupbyage
6,top关键字,限制返回记录的行数
-----(二)--插入---------
insert语句
格式如下:
insertinto<表名>[<字段1>,<字段2>……]values[常量1,…………]
例:insertintonews(id,news)values(1,新闻)
---(三)--更新-------
update语句
格式:
update<表名>set<列名>=<表达式>,<列名1>=<表达式1>……
where<条件>
例:updatenewssetcontent=最新消息wherenews_id=&news_id&
-----(四)---删除----------
delete语句
格式:deletefrom<表名>where条件
例:deletefromnewswherenews_id>20
好了sql语句我们就说这么多吧,下面我们开始创建个数据库,这里我们就用SQL数据库吧
打开查询分析器
创建个数据库叫news
createdatabasenews
usenews
createtableadmin
(
idintprimanykey,
admin_namevarchar(20)notnull,
admin_pwdvarchar(20)notnull,
)
然后我们插入一条数据
insertintoadminvalues(1,admin,admin)
然后我们用select*from查询一下
select*fromadmin
就会看到我们的数据了
好了,我们打开昨天做的登陆严整的代码,这里我们回顾一下吧,做天我们用了两个页来实现的会员登陆的验证,
这两个页分别是(登陆页login.asp)和(验证页checklogin.asp),
现在我们没有做数据库验证,
(登陆页login.asp)页我们不用改动,
下面我们只需改动(验证页checklogin.asp),就行了,
这里我们要做个连接数据库的页面文件,名字就叫conn.asp吧
代码如下
<%
dimconn,dbuid,dbpwd,dBName,dbip
dbuid=sa数据库登陆名
dbpwd=123456数据库密码
dBName=news数据库名称
dbip=(local)可为IP数据库所在地址,如果是本地数据库则为:(local)
---------------------------------------------------------------------------
Conn.OpenPROVIDER=SQLOLEDB.1;DataSource=&dbip&;InitialCatalog=&dBName&;PersistSecurityInfo=True;User
ID=&dbuid&;Password=&dbpwd&;ConnectTimeout=30
IfErrThen
err.Clear
setconn=nothing
Response.Write无法连接MSSQL
Response.End
EndIf
%>
打开checklogin.asp代码,
首先在页面上我们要引用数据库连接文件
<!--#includefile=conn.asp-->
<%
-------------------为防止出错我们定义username和password----------------
dimusername
dimpassword
--------用request的form方法来接受login.asp页面传来的值,并付值给我们定义的username和password
username=request.form(username)
password=request.form(password)
---------判断传来的值是不是空值
ifusername=then
用response的write的方法输出一个脚本
response.write<script>alert(用户名不能为空)</script>
response.end
endif
ifpassword=then
response.write<script>alert(密码不能为空)</script>
response.end
endif
----------判断用户名和密码是不是一样的,如果一样的输出登陆成功并把session的标志给这个用户,否则就输出登陆失败
------------这里我们就要在数据库里面比较两个值了
setrs=server.cerateobject(adodb.recordset)
sql=select*fromadminwhereadmin_name=&username&andadmin_pwd=&password&
rs.opensql,conn,1,1
如果用户不存在
ifrs.eofandrs.bofthen
response.write<SCRIPTlanguage=javascript>alert(用户名或密码不正确!);
response.writejavascript:history.go(-1)</SCRIPT>
response.end
负责将用session产生会话
else
session(admin)=rs(admin_name)
session(password)=rs(admin_pwd)
session(aleave)=rs(aleave)
response.redirectadmin.asp
endif
---------最后不要忘记关闭数据连接,释放资源
rs.close
setrs=nothing
%>
这里我们做好了一个简单的登陆严整,比如我们还可以用session来限制登陆的次数,或者登陆人的权限等等,
如有需要来blog看看哦,都有相应的文章.
接下来我们做添加把,哈哈哈,这个和上面的例子一样的简单
为了便于理解我都做成了两个页面,在本节的最后,我会用隐藏域的方法做个(增,删,改)在一个页的例子
我们继续吧
和上一个例子一样,这个页面还是用来输入值的,叫add.asp
<html>
<title>添加示例</title>
<body>
<formname=form1action=adduser.aspmethod=post>
<center>
<tablewith=500>
<tr>
<tdcolspan=2align=center><fontsize=5color=blue>添加</font>
</td>
</tr>
<tr>
<td><fontsize=2>用户名:</font></td>
<td>
<inputname=usernametype=textmaxlength=20>
</td>
</tr>
<tr>
<td><fontsize=2>密码:</font></td>
<td>
<inputtype=passwordname=passwordmaxlength=20>
</td>
</tr>
<tr>
<tdcolspan=2align=center>
<inputtype=submitvalue=添加>
<inputtype=resetvalue=重置>
</td>
</tr>
</table>
</center>
</form>
</body>
</html>
下面我们做adduser.asp,这个页面就是向数据库中添加值了
<!--#includefile=conn.asp-->
这里我们添加一个判断,用来判断是不是管理员,只有管理员才有权添加用户
<%
ifisempty(session(admin))orsession(admin)=then
response.redirectlogin.asp
endif
%>
<%
-------------------为防止出错我们定义username和password----------------
dimusername
dimpassword
--------用request的form方法来接受add.asp页面传来的值,并付值给我们定义的username和password
username=request.form(username)
password=request.form(password)
---------判断传来的值是不是空值
ifusername=then
用response的write的方法输出一个脚本
response.write<script>alert(用户名不能为空)</script>
response.end
endif
ifpassword=then
response.write<script>alert(密码不能为空)</script>
response.end
endif
----------判断用户是不是已经存在了,如存在就提示,并返回。
setrs=server.cerateobject(adodb.recordset)
sql=select*fromadminwhereadmin_name=&username&
rs.opensql,conn,3,3
如果用户存在
ifnot(rs.eofandrs.bof)then
response.write<SCRIPTlanguage=javascript>alert(用户以存在,请重新选择!);
response.writejavascript:history.go(-1)</SCRIPT>
response.redirectadd.asp
添加用户
else
rs.addnews
rs(admin_name)=username
rs(admin_pwd)=password
rs.update
response.write<SCRIPTlanguage=javascript>alert(添加成功,请返回);
response.writejavascript:history.go(-1)</SCRIPT>
response.redirectadd.asp
endif
---------最后不要忘记关闭数据连接,释放资源
rs.close
setrs=nothing
%>
----------------------------------------------------------------------------------------------------------------------
5天搞定asp第二天[续]
哈哈第二天的那页放不下了就分开了
不要意思了
好了,现在我来做“更新”“删除”
这里的重点是要取的要删除的数据的编号,数据编号是唯一的不可重复的
首先我们把所有的用户有取出来,并放在一个页面上
先写的是更新哦
呵呵
删除和这个基本一样就是SQL的语句不同,要注意的是新闻的id是怎么样取得的!!!!
这才是本文的重点!!!!!!!!!
---注意数据库中没有权限的字段,自己添上就行了----------呵呵--------
------------------------------------------------admin_admin.asp显示页---------------------------------
<html>
<head>
<title>管理系统</title>
<body>
<tablewidth=100%border=0cellpadding=0cellspacing=0>
<tr>
<td>
<tablewidth=100%border=0cellspacing=0cellpadding=0>
<tr>
<td></td>
</tr>
</table>
<tablewidth=90%border=0align=centercellpadding=0cellspacing=1bgcolor=#000000>
<tralign=centerbgcolor=#ffaaaa>
<tdwidth=15%height=24>ID</td>
<tdwidth=15%>用户</td>
<tdwidth=20%>密码</td>
<tdwidth=20%>权限</td>
<tdwidth=15%>修改</td>
<tdwidth=15%>删除</td>
</tr>
<%
Setrs=Server.CreateObject(ADODB.RecordSet)
sql=select*fromadminorderbyid
rs.Opensql,conn,1,1
whilenotrs.eof
ifrs(aleave)=superthenaleave=超级管理员endif
ifrs(aleave)=checkthenaleave=普通管理员endif
%>
<tralign=center>
<tdheight=22><%=rs(id)%></td>
<td><%=rs(admin)%></td>
<td><%=rs(password)%></td>
<td><%=aleave%></td>
<td><ahref=admin_AdminModify.asp?id=<%=rs(id)%>>修改</a></td>
<td><ahref=admin_AdminDel.asp?id=<%=rs(id)%>>删除</a></td>
</tr>
<%
rs.movenext
wend
rs.close
setrs=nothing
%>
</table>
</body>
</html>
----------------------编号id的接受页admin_AdminModify.asp-------------------------
<%
<!--#includefile=conn.asp-->
QueryString的方法取得用户id
id=request.QueryString(id)
setrs=server.createobject(adodb.recordset)
sql=select*fromadminwhereid=&id
rs.opensql,conn,1,1
ifrs.eofthen
response.write<SCRIPTlanguage=javascript>alert(服务器出错,请联系管理员!);
response.writejavascript:history.go(-1)</SCRIPT>
else
admin=rs(admin)
password=rs(password)
aleave=rs(aleave)
<table>
<formmethod=POSTaction=admin_adminSave.asp?id=<%=id%>>
<tr>
<tdcolspan=2align=center><b>修改管理员资料</b></td>
</tr>
<tr>
<tdwidth=30%height=22align=right>用户名:</td>
<tdwidth=70%>
<inputtype=textname=adminvalue=<%=admin%>size=20></td>
</tr>
<trbgcolor=#FFFFFF>
<tdwidth=30%height=22align=right>密码:</td>
<tdwidth=70%>
<inputtype=textname=passwordvalue=<%=password%>size=20></td>
</tr>
<trbgcolor=#FFFFFF>
<tdwidth=30%height=22align=right>权限:</td>
<tdwidth=70%height=22>
<selectname=aleavestyle=font-size:9ptclass=input>
<optionvalue=super<%ifaleave=superthen%>selected<%endif%>>超级管理员</option>
<optionvalue=check<%ifaleave=checkthen%>selected<%endif%>>普通管理员</option>
</select>
</td>
</tr>
<tralign=centerbgcolor=#FFFFFFheight=24>
<tdheight=30colspan=2>
<inputtype=hiddenvalue=editname=act>
<inputname=cmdoktype=submitid=cmdokvalue=修改>
<inputname=cmdcancetype=resetid=cmdcancevalue=清除>
</td>
</tr>
</form>
</table>
<%
endif
rs.close
setrs=nothing
%>
%>
-----------------------------------------------------------------
下面我们看看接收页怎么写的吧!这页面就是功能页了!
<!--#includefile=conn.asp-->
<%
admin=request.form(admin)
password=request.form(password)
aleave=request.form(aleave)
ifadmin=orpassword=then
response.write<SCRIPTlanguage=javascript>alert(管理员名称和密码都不能为空!);
response.writejavascript:history.go(-1)</SCRIPT>
Response.End
endif
setrs=server.CreateObject(ADODB.RecordSet)
ifrequest(act)=editandrequest.QueryString(id)<>then
id=request(id)
sql=select*fromadminwhereid=&request.QueryString(id)
rs.opensql,conn,3,2
ifnotrs.eofthen
rs(aleave)=aleave
rs(admin)=admin
rs(password)=encrypt(password)
rs.update
endif
rs.close
elseifrequest(act)=addthen
sql=select*fromadminwhereadmin_name=&admin&
rs.opensql,conn,3,2
if(rs.eofandrs.bof)then
rs.addnew
rs(aleave)=aleave
rs(admin)=admin
rs(password)=password
rs.update
endif
rs.close
endif
setrs=nothing
conn.close
setconn=nothing
response.redirectadmin_admin.asp
%>
--------------------------------删除------------------------------------
有了上面的基础写删除就更简单了,我们继续哦
是不是很简单哦
<!--#includefile=conn.asp-->
<%
ifisempty(session(admin))orsession(admin)=then
response.redirectlogin.asp
endif
%>
<%
setrs=server.CreateObject(ADODB.RecordSet)
rs.opendelete*fromadminwhereid=&request.QueryString(id),conn,1
setrs=nothing
response.redirectadmin_admin.asp
%>
最后我们把今天说的东西在总结一下,今天我们做了增,删,改
这里,增加我们主要是用到了数据库的操作,在写添加的时候用sql的insert语句直接添加也行,我们用的是rs.addnew的方法
喜欢怎么用就怎么用了,,,呵呵
随心情了,
在就是修改和删除,这两个功能最总要的就是怎么样锁定要修改的那条记录,
这里的方法就多了,可以用QueryString的方法取得用户id,也可以用隐藏域的方法取的id
我们也可以把增,删,改写在一个页面中这样显得整洁一些,
呵呵,这个也就看个人爱好了,刚开始学的话就好用多个页实现功能,
等时间常了熟练了在用一个页面写
下面大家就来看看我是怎么样用隐藏域的方法来实现一页完成这写功能的和怎么样用隐藏域的方法取的id的???????
-------------------------------一个页面的增,删,改------------------------------------
<!--#includefile=conn.asp-->
<%
info=trim(request(info))
Setrs=Server.CreateObject(ADODB.Recordset)
selectcaseinfo
caseadd
sql=SELECT*FROMlink
rs.Opensql,conn,1,3
rs.Addnew
rs(name)=trim(request(webname))
rs(url)=trim(request(url))
rs.Update
Response.Redirectmody.asp
casemod
sql=SELECT*FROMlinkwhereid=&trim(request(id))
rs.Opensql,conn,1,3
rs(name)=trim(request(webname))
rs(url)=trim(request(url))
rs.Update
Response.Redirectmody.asp
casedel
sql=delete*FROMlinkwhereid=&trim(request(id))
rs.Opensql,conn,1,3
Response.Redirectmody.asp
caseelse
Setrs=Server.CreateObject(ADODB.Recordset)
sql=SELECT*FROMlinkorderbyidasc
rs.Opensql,conn,1,3
%>
<tableborder=1width=500align=centercellspacing=0>
<tr>
<tdwidth=33%align=center>网站名称</td>
<tdwidth=33%align=center>网站地址</td>
<tdwidth=34%align=center>操作</td>
<formmethod=POSTaction=mody.asp>
<tr>
<tdwidth=33%><inputtype=hiddenname=infovalue=add><inputtype=textname=webnamesize=20></td>
<tdwidth=33%><inputtype=textname=urlsize=20></td>
<tdwidth=34%><inputtype=submitvalue=添加name=B1></td>
</tr></form>
<%dowhilenotrs.eof%><formmethod=POSTaction=mody.asp>
<tr>
<tdwidth=33%><inputtype=hiddenname=infovalue=mod><inputtype=hiddenname=idvalue=<%=rs(id)%
>><inputtype=textname=webnamesize=20value=<%=rs(name)%>></td>
<tdwidth=33%><inputtype=textname=urlsize=20value=<%=rs(url)%>></td>
<tdwidth=34%><inputtype=submitvalue=修改name=B1><inputtype=buttonname=Submitvalue=删除
onClick=javascript:location=mody.asp?info=delid=<%=rs(id)%>></td>
</tr></form><%rs.movenext
loop%>
</table>
<%endselect%>
<%rs.close%>
呵呵今天就说到这吧,讲的东西有点多,大家仔细的看看,有什么不懂的,给我留言吧QQ:2142714354151107
现在都午夜了哦哈哈哈哈哈哈
明天我们总结一下吧,这两天的东西在大学里要学大半的学期呢,
希望大家都能高兴,开心了
-------------------------------------------------------------------------------------------------------------------
第三天
上一节我们讲解了ASP中应用最广泛的操作,其实那就是个网站的后台的管理中(用户的管理),
新闻管理,投票管理也都是这样做的,不用的就是他们的功能更复杂,数据更多,
其中留言板就是数据的存储和读取的过程,不过是我们把这个过程复杂化了,
第一天,我们讲解了数据和值的传递过程,用<form>来将值传递到下一个页面中,并用Request.form来接受,用response.write的方法来输出
,这里主要是让大家理解值的传递过程,当然我们也可以在一个页面中传递。
第二天,我们讲解了SQL的常用的语句,和在ASP中怎么样执行SQL语句,
今天我们主要讲一下:SESSION和cookies,回顾以下response,request。
首先,登陆模块的程序都会用到检测是不是用户已经登陆这个步骤。这就用到了SESSION和cookies,
我们还是用代码来说明(在上面的程序中我们已经用到了):
---------------------------------------------------
<1>这是session的写法:
<%
如果用户存在
session(aleave)=rs(aleave)
%>
------------------------------------------------
<2>这是cookies的写法:
<%
response.cookies(adminok)=true
%>
这样我们就能在我们需要的地方进行判断了
代码如下:
<%
ifsession(aleave)=then
response.redirectadminlogin.asp
response.end
endif
%>
这里是cookies的验证判断:
<%
ifrequest.cookies(adminok)=then
response.redirectlogin.asp
endif
%>
这样没有session和cookies标志的用户是无法打开这个页面。
最后我们说一下response.redirect,它是重定向的意思,
后面的login.asp就是转向的文件。这样没有登陆的管理员是无法看到后面的内容的。
下面总结一下
response常用的就是response.write(),response.redirect()分别是写字符串和转向的作用
request基本就是request.form(),request.querystring()分别是接受post,get方法传来的信息
这里我给大家一个常用的(Access)数据库连接代码(Sql的在上面的例子中有哦,我就不写了):
以后大家只要改换“数据库”就可以直接用了,
----------
<%
数据库连接程序conn.asp
strSQL=DBQ=+server.mappath(db/news.mdb)+;DRIVER={MicrosoftAccessDriver(*.mdb)};
setconn=server.createobject(ADODB.CONNECTION)
conn.openstrSQL
%>
为了保证数据库的安全呢,我们可以把数据库的扩展名换成.asp的,也可以是asa,
最好把数据库的名字弄的复杂点,
在就是数据库的字段也要弄的复杂点哦,要不然人家用软件猜解也是很容易的哦
并在页面中过滤掉非法的字符,这样能安全点(网站有很多的防SQL注入的代码哦,也有很多的注入工具)
还是自己把网站弄的安全点吧,
并且用例子来演示了怎么样实现整个功能,希望大家能多看看代码,多动手来打打代码,还有就是尽量用“记事本”编写代码,
不要上来就用一些开发工具和代码提示的软件,这样不利于我们对代码的理解和记忆。
今天就到这里,多看看我们第二天讲的东西那是asp数据管理最重要的地方
明天我们讲解asp中的分页
呵呵大家明天见哦晚安!
---------------------------------------------------------------------------------------------------
第四天
利用ASP分页显示实例
这里我们要说的就是ASP中比较复杂的分页技术了,代码有点多,但是不是很复杂,
大家多看几便就能理解了,
首先我们先理解一下分页的原理:
在前几天我们了解了Recordset对象的以上属性和方法后,
我们来考虑一下,如何运用它们来达到我们分页显示的目的。
我们可以为PageSize属性设置一个值,从而指定从记录组中取出的构成一个页的行数;
然后通过RecordCount属性来确定记录的总数;
再用记录总数除以PageSize就可得到所显示的页面总数;
最后通过AbsolutePage属性就能完成对指定页的访问。
好象很并不复杂呀,下面让我们来看看程序该如何实现呢?
代码主要用到Connection、RecordSet这两个对象,程序中的数据库为Access库,
采用OLEDB方式连接库。
<%
Setconn=Server.CreateObject(ADODB.Connection)
strcon=provider=microsoft.jet.oledb.4.0;datasource=&_
server.mappath(mdb.mdb)
conn.Openstrcon
Setrs=Server.CreateObject(ADODB.Recordset)
sql=select*fromtableorderbyiddesc
rs.Opensql,conn,1
page=1设置变量PAGE=1
rs.PageSize=5每页显示记录数
ifNotIsEmpty(Request(Page))then如果Page已经初始化...
Page=CInt(Request(Page))接收Page并化为数字型赋给Page变量
ifPage>rs.PageCountthen如果接收的页数大于总页数
rs.AbsolutePage=rs.PageCount设置当前显示页等于最后页
elseifPage<=0then如果page小于等于0
Page=1设置PAGE等于第一页
else
rs.AbsolutePage=Page如果大于零,显示当前页等于接收的页数
endif
Endif
Page=rs.AbsolutePage
%>
<%
Fori=1tors.PageSize
ifrs.EOFthen
ExitFor
endif利用fornext循环依次读出记录
%>
一个页中显示多少条数据Rs.pagesize=5,
把5改为你想显示的记录数.比如说
改为10.那么每页就是显示10页.还需要修改的是select语句.就是你要检索的数据库了.
也就是说放到任何一个系统中上面的代码只需很小的改动都可以直接拿过来用.
然后:就是要循环读出记录的显示内容了..............比如
<tablewidth=50border=1align=center><tr><TD><%=rs(内容)%></td></tr></table><%rs.MoveNextnext%>
当然也可以改为response.write输出.
最后,添加下一页,上一页的链接:
<%ifrequest(page)>1then%><aHref=test.asp?Page=<%=1%>>首页</a><aHref=test.asp?Page=<%=request(page)-1%>>上一
页</a><%endif%><%ifrequest(page)<>rs.pagecountthen%><aHref=test.asp?Page=<%=request(page)+1%>>下一页</a><a
Href=test.asp?Page=<%=rs.PageCount%>>尾页</a><%endif%>
上面的代码只管复制粘贴.只需把page.asp改成你自己的文件名就可以了。
随便把这段代码放在什么地方?就是你想让它出现下一页下一页链接的地方吧.
最后.关闭记录集释放资源:
<%
rs.close
Setrs=Nothing
conn.close
setconn=nothing
%>
--------------------------------------------------------------------------------
要克服最后一页中的"下一页"仍处于连接状态有一个办法.就是把程序中稍加改动如下:
<%ifrequest(page)<>rs.pagecountthen%>
<aHref=test.asp?Page=<%=request(page)+1%>>下一页</a>
<%elseresponse.write下一页%>
就是此时把"下一页"设置成非连接状态
Fori=1tors.PageSize
ifrs.EOFthen
ExitFor
endif利用fornext循环依次读出记录
使用的是Dowhile。
分页代码的示例:::
-----------------------------------------------------------------------------------
<%
db=数据地址.mdb
Setconn=Server.CreateObject(ADODB.Connection)
conns=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=&Server.MapPath(&db&)
conn.Openconns
Setrs=Server.CreateObject(ADODB.Recordset)
sql=Select*from表名orderbyiddesc
rs.opensql,conn,1,1
ifrs.eofthen
response.write(没有记录)
else
Page=Int(Abs(Request(page)))
IFnotIsNumeric(Request(page))OrIsEmpty(Request(page))Thenpage=1
rs.pagesize=10每页显示记录数
total=rs.RecordCount
mp=rs.pagesize
rs.absolutepage=page
i=0:k=0
dowhilenotrs.eofandmp>0:k=k+1
response.write(显示第&rs(id)&条记录)
i=i+1
mp=mp-1
rs.movenext
loop
ifpage>rs.pagecountthenResponse.redirect(index.asp?page=&rs.pagecount)
ifpage>1then
response.Write(<ahref=index.asp?&page=1title=首页>首页</a>)
response.Write(<ahref=index.asp?page=&page-1&title=上一页>上一页</a>)
endif
response.Write(第&page&/&rs.pagecount&页共&total&条记录本页显示第&(page-1)*rs.pagesize+1&条到第&(page-1)
*rs.pagesize+k&条)
ifpage<rs.pagecountthen
response.Write(<ahref=index.asp?page=&page+1&title=下一页>下一页</a>)
response.Write(<ahref=index.asp?page=&rs.pagecount&title=尾页>尾页</a>)
endif
endif
rs.close
setrs=nothing
conn.close
setconn=nothing
%>
这样一个分页的程序就算是做好了,这个程序非常简单而且便于理解,是个学习的好例子。
大家在做一个程序前应该多想想怎么样实现这个功能,然后在动手去写这个代码,
这样才能做到胸有成竹。
呵呵,有时候学点东西真的很不爽哦,
又快到新的一天了
明天我们粗率的讲解一下ASP的组件,这样asp的精华我们也就全部讲完了,
以后的学习过程就要靠我们自己努力了,
最好的学习方法就是多看示例,呵呵
美好的明天一定会来的~~~~~~~~~~~~~~~~~~~blog.91time.com
----------------------------------------------------------------------------------------------------------------
第五天
今天我们来说说ASP组件,
asp的组件的功能是十分强大的,今天我们就来简单的说说
要用asp组件就要创建asp组件
在一个asp页面中创建asp组件,需要使用server内置对象的createobject的方法,
我们来看例子:
<%
%>
上面我们创建了JMail组件对象的示例,并付值给JMail
有的asp组件还要求注册的哦,而且,每个asp组件都有自己属性和方法,
这个就要大家自己平时多看看了哦
用什么组件就多了解那个组件吧
呵呵
下面我们用现在常用的Jmail组件来详细说明组件的用法:
在Asp程序中用Jmail发邮件的比较多,主要是因为多数虚拟主机支持他,其它的支持的较少。下面是一
个Jmail发邮件的例子代码:
如果您在自己的机器上试,请下载Jmail.dll,下载解压后,双击Setup.bat即可完成安装!
<%
Onerrorresumenext
DimJMail,contentId
SetJMail=Server.CreateObject(JMail.Message)
JMail.Charset=gb2312邮件字符集,默认为US-ASCII
JMail.ISOEncodeHeaders=False是否进行ISO编码,默认为True
发送者信息(可用变量方式赋值)
JMail.From=email@net118.com发送者地址
JMail.FromName=XX发送者姓名
JMail.Subject=邮件主题邮件主题
身份验证
JMail.MailServerUserName=myusername身份验证的用户名
JMail.MailServerPassword=mypassword身份验证的密码
设置优先级,范围从1到5,越大的优先级越高,3为普通
JMail.Priority=3
JMail.AddHeaderOriginating-IP,Request.ServerVariables(REMOTE_ADDR)
加入一个收件人【变量email:收件人地址】可以同一语句重复加入多个
JMail.AddRecipient(webmaster@net118.com)
加入附件【变量20051027171159.htm:附件文件的绝对地址,确保用户IUSR_机器名有访问的权限】
【参数设置是(True)否(False)为Inline方式】
contentId=JMail.AddAttachment(Server.MapPath(jmail.asp),True)
邮件主体(HTML(注意信件内链接附件的方式))
JMail.HTMLBody=<html><head><METAcontent=zh-cnhttp-equiv=Content-Language><metahttp-
equiv=Content-Typecontent=text/html;charset=gb2312><styletype=text/css>A:link{
FONT-SIZE:9pt;TEXT-DECORATION:none;color:#000000}A:visited{FONT-SIZE:9pt;TEXT-
DECORATION:none;color:#666666}A:hover{COLOR:#ff6600;FONT-SIZE:9pt;TEXT-DECORATION:
underline}BODY{FONT-SIZE:9pt}--></style></head><body><fontcolor=red>邮件正文
</font><br><fontcolor=green>邮件正文</font><br><b>邮件正文</b></body></html>
邮件主体(文本部分)
JMail.Body=我们的邮件采用了HTML格式,但是您的邮件查看软件可能不支持。。。邮件正文,邮件正
文,邮件正文
发送【调用格式:objJMail.Send([username:password@]SMTPServerAddress[:Port])】
JMail.Send(smtp.163.com)
关闭并清除对象
JMail.Close()
SetJMail=Nothing
iferr.number<>0then
response.write发送发送失败!
else
response.write邮件发送成功!
endif
%>
如果想要Jmail的详细方法就来我的博客看看吧!
呵呵这样就可以用jmail来发邮件了
能发邮件的组件还有Cdonts组件等等,
asp的功能远远不只这些,象用asp的fso(文件系统组件)等等,很多强大的功能都等我们去学习,
五天搞定ASP就是给出学的朋友领条路,
这五天说的都是ASP的精华,大家有空多看看,就能理解了,
谢谢大家的支持,
如果有什么问题请来我的博客
※※※※※呵呵,
如果那个高手看到哥们有写错的地方请指出,
我一定改正,※※※※※※※※※※
上一篇:bbs树型结构的实现方法(二)