手机
当前位置:查字典教程网 >编程开发 >ASP教程 >5天学会asp
5天学会asp
摘要:呵呵,看到网上有人写了10天学会asp,偶也想写一个,他既然叫10天,那我就5天吧,呵呵,新手多看看,高手指出错误,不要笑话偶啊!知识只有共...

呵呵,看到网上有人写了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="2"align="center"><fontsize=5color=blue>用户登录入口</font>

</td>

</tr>

<tr>

<td><fontsize=2>用户名:</font></td>

<td>

<inputname=usernametype="text"maxlength="20">

</td>

</tr>

<tr>

<td><fontsize=2>密码:</font></td>

<td>

<inputtype="password"name=passwordmaxlength="20">

</td>

</tr>

<tr>

<tdcolspan="2"align=center>

<inputtype="submit"value=登录>

<inputtype="reset"value=重置>

</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="admin"andpassword="admin"then

response.write"登陆成功"

session("loginok")=username

else

response.write"登陆失败"

'重定向到login.asp

response.redirect"login.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语句,<如果您需要了解更多的请

看我的Blog.91time.com中的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)

'---------------------------------------------------------------------------

setconn=Server.CreateObject("adodb.Connection")

Conn.Open"PROVIDER=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代码,

首先在页面上我们要引用数据库连接文件

<>

<%

'-------------------为防止出错我们定义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.write"javascript:history.go(-1)</SCRIPT>"

response.end

'负责将用session产生会话

else

session("admin")=rs("admin_name")

session("password")=rs("admin_pwd")

session("aleave")=rs("aleave")

response.redirect"admin.asp"

endif

'---------最后不要忘记关闭数据连接,释放资源

rs.close

setrs=nothing

%>

这里我们做好了一个简单的登陆严整,比如我们还可以用session来限制登陆的次数,或者登陆人的权限等等,

如有需要来blog看看哦,都有相应的文章.http://blog.91time.com

接下来我们做添加把,哈哈哈,这个和上面的例子一样的简单

为了便于理解我都做成了两个页面,在本节的最后,我会用"隐藏域的方法做个(增,删,改)在一个页的例子"

我们继续吧

和上一个例子一样,这个页面还是用来输入值的,叫add.asp

<html>

<title>添加示例</title>

<body>

<formname=form1action=adduser.aspmethod=post>

<center>

<tablewith=500>

<tr>

<tdcolspan="2"align="center"><fontsize=5color=blue>添加</font>

</td>

</tr>

<tr>

<td><fontsize=2>用户名:</font></td>

<td>

<inputname=usernametype="text"maxlength="20">

</td>

</tr>

<tr>

<td><fontsize=2>密码:</font></td>

<td>

<inputtype="password"name=passwordmaxlength="20">

</td>

</tr>

<tr>

<tdcolspan="2"align=center>

<inputtype="submit"value=添加>

<inputtype="reset"value=重置>

</td>

</tr>

</table>

</center>

</form>

</body>

</html>

下面我们做adduser.asp,这个页面就是向数据库中添加值了

<>

'这里我们添加一个判断,用来判断是不是管理员,只有管理员才有权添加用户

<%

ifisempty(session("admin"))orsession("admin")=""then

response.redirect"login.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.write"javascript:history.go(-1)</SCRIPT>"

response.redirect"add.asp"

'添加用户

else

rs.addnews

rs("admin_name")=username

rs("admin_pwd")=password

rs.update

response.write"<SCRIPTlanguage=javascript>alert('添加成功,请返回');"

response.write"javascript:history.go(-1)</SCRIPT>"

response.redirect"add.asp"

endif

'---------最后不要忘记关闭数据连接,释放资源

rs.close

setrs=nothing

%>

----------------------------------------------------------------------------------------------------------------------

5天搞定asp第二天[续]

哈哈第二天的那页放不下了就分开了

不要意思了

好了,现在我来做“更新”“删除”

这里的重点是要取的要删除的数据的编号,数据编号是唯一的不可重复的

首先我们把所有的用户有取出来,并放在一个页面上

先写的是更新哦

呵呵

删除和这个基本一样就是SQL的语句不同,要注意的是新闻的id是怎么样取得的!!!!

这才是本文的重点!!!!!!!!!

---注意数据库中没有权限的字段,自己添上就行了----------呵呵--------

------------------------------------------------admin_admin.asp显示页---------------------------------

<html>

<head>

<title>管理系统</title>

<body>

<tablewidth="100%"border="0"cellpadding="0"cellspacing="0">

<tr>

<td>

<tablewidth="100%"border="0"cellspacing="0"cellpadding="0">

<tr>

<td></td>

</tr>

</table>

<tablewidth="90%"border="0"align="center"cellpadding="0"cellspacing="1"bgcolor="#000000">

<tralign="center"bgcolor="#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")="super"thenaleave="超级管理员"endif

ifrs("aleave")="check"thenaleave="普通管理员"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-------------------------

<%

<>

'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.write"javascript:history.go(-1)</SCRIPT>"

else

admin=rs("admin")

password=rs("password")

aleave=rs("aleave")

<table>

<formmethod="POST"action="admin_adminSave.asp?id=<%=id%>">

<tr>

<tdcolspan=2align=center><b>修改管理员资料</b></td>

</tr>

<tr>

<tdwidth="30%"height="22"align="right">用户名:</td>

<tdwidth="70%">

<inputtype="text"name="admin"value="<%=admin%>"size="20"></td>

</tr>

<trbgcolor="#FFFFFF">

<tdwidth="30%"height="22"align="right">密码:</td>

<tdwidth="70%">

<inputtype="text"name="password"value="<%=password%>"size="20"></td>

</tr>

<trbgcolor="#FFFFFF">

<tdwidth="30%"height="22"align="right">权限:</td>

<tdwidth="70%"height="22">

<selectname="aleave"style="font-size:9pt"class="input">

<optionvalue=super<%ifaleave="super"then%>selected<%endif%>>超级管理员</option>

<optionvalue=check<%ifaleave="check"then%>selected<%endif%>>普通管理员</option>

</select>

</td>

</tr>

<tralign="center"bgcolor="#FFFFFF"height="24">

<tdheight="30"colspan=2>

<inputtype="hidden"value="edit"name="act">

<inputname="cmdok"type="submit"id="cmdok"value="修改">

<inputname="cmdcance"type="reset"id="cmdcance"value="清除">

</td>

</tr>

</form>

</table>

<%

endif

rs.close

setrs=nothing

%>

%>

-----------------------------------------------------------------

下面我们看看接收页怎么写的吧!这页面就是功能页了!

<>

<%

admin=request.form("admin")

password=request.form("password")

aleave=request.form("aleave")

ifadmin=""orpassword=""then

response.write"<SCRIPTlanguage=javascript>alert('管理员名称和密码都不能为空!');"

response.write"javascript:history.go(-1)</SCRIPT>"

Response.End

endif

setrs=server.CreateObject("ADODB.RecordSet")

ifrequest("act")="edit"andrequest.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")="add"then

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.redirect"admin_admin.asp"

%>

--------------------------------删除------------------------------------

有了上面的基础写删除就更简单了,我们继续哦

是不是很简单哦

<>

<%

ifisempty(session("admin"))orsession("admin")=""then

response.redirect"login.asp"

endif

%>

<%

setrs=server.CreateObject("ADODB.RecordSet")

rs.open"delete*fromadminwhereid="&request.QueryString("id"),conn,1

setrs=nothing

response.redirect"admin_admin.asp"

%>

最后我们把今天说的东西在总结一下,今天我们做了增,删,改

这里,增加我们主要是用到了数据库的操作,在写添加的时候用sql的insert语句直接添加也行,我们用的是rs.addnew的方法

喜欢怎么用就怎么用了,,,呵呵

随心情了,

在就是修改和删除,这两个功能最总要的就是怎么样锁定要修改的那条记录,

这里的方法就多了,可以用QueryString的方法取得用户id,也可以用"隐藏域的方法取的id"

我们也可以把增,删,改写在一个页面中这样显得整洁一些,

呵呵,这个也就看个人爱好了,刚开始学的话就好用多个页实现功能,

等时间常了熟练了在用一个页面写

下面大家就来看看我是怎么样用隐藏域的方法来实现一页完成这写功能的和怎么样用"隐藏域的方法取的id"的???????

-------------------------------一个页面的增,删,改------------------------------------

<>

<%

info=trim(request("info"))

Setrs=Server.CreateObject("ADODB.Recordset")

selectcaseinfo

case"add"

sql="SELECT*FROMlink"

rs.Opensql,conn,1,3

rs.Addnew

rs("name")=trim(request("webname"))

rs("url")=trim(request("url"))

rs.Update

Response.Redirect"mody.asp"

case"mod"

sql="SELECT*FROMlinkwhereid="&trim(request("id"))

rs.Opensql,conn,1,3

rs("name")=trim(request("webname"))

rs("url")=trim(request("url"))

rs.Update

Response.Redirect"mody.asp"

case"del"

sql="delete*FROMlinkwhereid="&trim(request("id"))

rs.Opensql,conn,1,3

Response.Redirect"mody.asp"

caseelse

Setrs=Server.CreateObject("ADODB.Recordset")

sql="SELECT*FROMlinkorderbyidasc"

rs.Opensql,conn,1,3

%>

<tableborder="1"width="500"align=centercellspacing="0">

<tr>

<tdwidth="33%"align="center">网站名称</td>

<tdwidth="33%"align="center">网站地址</td>

<tdwidth="34%"align="center">操作</td>

<formmethod="POST"action="mody.asp">

<tr>

<tdwidth="33%"><inputtype="hidden"name="info"value="add"><inputtype="text"name="webname"size="20"></td>

<tdwidth="33%"><inputtype="text"name="url"size="20"></td>

<tdwidth="34%"><inputtype="submit"value="添加"name="B1"></td>

</tr></form>

<%dowhilenotrs.eof%><formmethod="POST"action="mody.asp">

<tr>

<tdwidth="33%"><inputtype="hidden"name="info"value="mod"><inputtype="hidden"name="id"value="<%=rs("id")%

>"><inputtype="text"name="webname"size="20"value="<%=rs("name")%>"></td>

<tdwidth="33%"><inputtype="text"name="url"size="20"value="<%=rs("url")%>"></td>

<tdwidth="34%"><inputtype="submit"value="修改"name="B1"><inputtype="button"name="Submit"value="删除"

onClick="javascript:location='mody.asp?info=del&id=<%=rs("id")%>'"></td>

</tr></form><%rs.movenext

loop%>

</table>

<%endselect%>

<%rs.close%>

呵呵今天就说到这吧,讲的东西有点多,大家仔细的看看,有什么不懂的,给我留言吧QQ:21427143||54151107

现在都午夜了哦哈哈哈哈哈哈

明天我们总结一下吧,这两天的东西在大学里要学大半的学期呢,

希望大家都能高兴,开心了

-------------------------------------------------------------------------------------------------------------------

第三天

上一节我们讲解了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.redirect"adminlogin.asp"

response.end

endif

%>

这里是cookies的验证判断:

<%

ifrequest.cookies("adminok")=""then

response.redirect"login.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=1'title='首页'>首页</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的方法,

我们来看例子:

<%

SetJMail=Server.CreateObject("JMail.Message")

%>

上面我们创建了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.AddHeader"Originating-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-Type""content=""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的详细方法就来我的博客看看吧!http://blog.91time.com

呵呵这样就可以用jmail来发邮件了

能发邮件的组件还有Cdonts组件等等,

asp的功能远远不只这些,象用asp的fso(文件系统组件)等等,很多强大的功能都等我们去学习,

五天搞定ASP就是给出学的朋友领条路,

这五天说的都是ASP的精华,大家有空多看看,就能理解了,

谢谢大家的支持,

如果有什么问题请来我的博客http://blog.91time.com

※※※※※呵呵,

如果那个高手看到哥们有写错的地方请指出,

我一定改正,※※※※※※※※※※

【5天学会asp】相关文章:

初学asp者必看

ASP Application对象教程

用XMLHTTP很好的一个例子

ASP.NET共享ASP用户Session的方法及代码

ASP获取新增记录ID值的方法

如何采集静态文章系统

ASP常用函数:IIF()

支持权重的无组件ASP广告显示代码

Asp开发中常见错误提示及其意义说明

ASP开发中数据库文件调用的捷径

精品推荐
分类导航