DDR爱好者之家 Design By 杰米
呵呵,看到网上有人写了10天学会asp,偶也想写一个,他既然叫10天,那我就5天吧,呵呵,新手多看看,高手指出错误,不要笑话偶啊!知
识只有共享才能发展,不要吝啬你的知识!!!!
好了我们闲话少说现在就开始吧!
首先,我先把ASP说一下,asp就是 Active Server Pages的简写,
我们为了方便理解那,就把asp想成是 插入到HTml中的一种脚本语言吧,这样理解起来方便。
书上都是以hello world的代码开始的,我们也这样开始吧!
这里我们就开始以示例讲解了:
〈html〉
<title>hello world</title>
<body>
<%response.write("hello world")%>
</body>
</html>
保存成test.asp,调试一下 就能看到hello world 了。
这里先让大家看看他是怎么样插入到HTML中的(asp程序是放在"<% %>"中间的)
当然我们也可以在response.write中输出HTML标记,比如 :
<%response.write"<font size=20 color=red>你好</font>"%>
就能看到一个红色的20号的"你好"
接下来我们就说
asp中有六大内置对象,分别是:
Request: 负责从用户端接受信息
Response:传递信息给用户
Server: 控制asp运行环境
session: 负责存储个别用户信息
Application:负责存储数据以提供多个用户的使用
objectcontext:可提供asp程序直接配合MTS进行分散事物处理
这其中我们就常用的就是:Request,Response,Server,session,Application
在本文中会逐一讲到,
刚才我们用了六大内置对象中的Response的write方法输出了hello world
下面我们就用一个例子来讲解request和response的用法:
首先,我们要用到html的form标签来传递值:
一,我们先做个表单页面,用来输入数据,这个页面就叫login.asp
<html>
<title>request和response的演示(值的传递和输出)</title>
<body>
<form name=form1 action=checklogin.asp method=post>
<center>
<table with=500>
<tr>
<td colspan="2" align="center"><font size=5 color=blue>用户登录入口</font>
</td>
</tr>
<tr>
<td><font size=2>用户名:</font></td>
<td>
<input name=username type="text" maxlength="20">
</td>
</tr>
<tr>
<td><font size=2>密 码:</font></td>
<td>
<input type="password" name=password maxlength="20">
</td>
</tr>
<tr>
<td colspan="2" align=center>
<input type="submit" value=登录>
<input type="reset" value=重置>
</td>
</tr>
</table>
</center>
</form>
</body>
</html>
二,我们在做一个页面来接受这些数据,这个页面就叫checklogin.asp
<%
'-------------------为防止出错我们定义username和password----------------
dim username
dim password
'--------用request的form方法来接受login.asp页面传来的值,并付值给我们定义的username和password
username=request.form("username")
password=request.form("password")
'---------判断传来的值是不是空值
if username="" then
'用response的write的方法输出一个脚本
response.write"<script>alert('用户名不能为空')</script>"
response.end
end if
if password="" then
response.write"<script>alert('密码不能为空')</script>"
response.end
end if
'----------判断用户名和密码是不是一样的,如果一样的输出"登陆成功"并把session的标志给这个用户,否则就输出"登陆失败"
if username="admin" and password="admin" then
response.write"登陆成功"
session("loginok")=username
else
response.write"登陆失败"
'重定向到login.asp
response.redirect"login.asp"
end if
%>
这里我们用到了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 [条件] order by [条件] desc
其中,desc降序,默认是asc升序,
例子:select * from news where news_id='"&news_id&"' order by news_id desc
意思就是查询news表中的"*"代表所有数据,条件是news_id等于 news_id然后按照news_id 的降序排列
在查询里还能用到group by分组排序等等,这里就不系说了。
2,count()函数用来计算记录的行数。
例:select count(*) from news
计算数据库中有多少行
3,sum()函数用来计算表达试中的项目和。
例:select age,sum(number) from person where age>20 group by age
6,top关键字,限制返回记录的行数
-----(二)--插入---------
insert 语句
格式如下:
insert into <表名>[<字段1>,<字段2>……] values[常量1,…………]
例:insert into news(id,news) values(1,'新闻')
---(三)--更新-------
update语句
格式:
update<表名> set <列名>=<表达式>,<列名1>=<表达式1>……
where <条件>
例:update news set content=最新消息 where news_id='"&news_id&"'
-----(四)---删除----------
delete语句
格式:delete from <表名> where 条件
例:delete from news where news_id>20
好了sql语句我们就说这么多吧,下面我们开始创建个数据库,这里我们就用SQL数据库吧
打开" 查询分析器"
'创建个数据库叫news
create database news
use news
create table admin
(
id int primany key,
admin_name varchar(20) not null,
admin_pwd varchar(20) not null,
)
'然后我们插入一条数据
insert into admin values(1,'admin','admin')
'然后我们用select * from 查询一下
select * from admin
就会看到我们的数据了
好了,我们打开昨天做的登陆严整的代码,这里我们回顾一下吧,做天我们用了两个页来实现的会员登陆的验证,
这两个页分别是(登陆页login.asp)和(验证页checklogin.asp),
现在我们没有做数据库验证,
(登陆页login.asp)页我们不用改动,
下面我们只需改动(验证页checklogin.asp),就行了,
这里我们要做个连接数据库的页面文件,名字就叫conn.asp吧
代码如下
<%
dim conn,dbuid,dbpwd,dBName,dbip
dbuid="sa" '数据库登陆名
dbpwd="123456" '数据库密码
dBName="news" '数据库名称
dbip="(local)" '可为IP '数据库所在地址,如果是本地数据库则为:(local)
'---------------------------------------------------------------------------
set conn=Server.CreateObject("adodb.Connection")
Conn.Open "PROVIDER=SQLOLEDB.1;Data Source="&dbip&";Initial Catalog="&dBName&";Persist Security Info=True;User
ID="&dbuid&";Password="&dbpwd&";Connect Timeout=30"
If Err Then
err.Clear
set conn=nothing
Response.Write "无法连接MSSQL"
Response.End
End If
%>
打开checklogin.asp代码,
首先在页面上我们要引用数据库连接文件
<!--#include file=conn.asp-->
<%
'-------------------为防止出错我们定义username和password----------------
dim username
dim password
'--------用request的form方法来接受login.asp页面传来的值,并付值给我们定义的username和password
username=request.form("username")
password=request.form("password")
'---------判断传来的值是不是空值
if username="" then
'用response的write的方法输出一个脚本
response.write"<script>alert('用户名不能为空')</script>"
response.end
end if
if password="" then
response.write"<script>alert('密码不能为空')</script>"
response.end
end if
'----------判断用户名和密码是不是一样的,如果一样的输出"登陆成功"并把session的标志给这个用户,否则就输出"登陆失败"
'------------这里我们就要在数据库里面比较两个值了
set rs=server.cerateobject("adodb.recordset")
sql="select * from admin where admin_name='"&username&"' and admin_pwd='"&password&"' "
rs.open sql,conn,1,1
'如果用户不存在
if rs.eof and rs.bof then
response.write"<SCRIPT language=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"
end if
'---------最后不要忘记关闭数据连接,释放资源
rs.close
set rs=nothing
%>
这里我们做好了一个简单的登陆严整,比如我们还可以用session来限制登陆的次数,或者登陆人的权限等等,
如有需要来blog看看哦,都有相应的文章.http://blog.91time.com
接下来我们做添加把,哈哈哈 ,这个和上面的例子一样的简单
为了便于理解我都做成了两个页面,在本节的最后,我会用"隐藏域的方法做个(增,删,改)在一个页的例子"
我们继续吧
和上一个例子一样,这个页面还是用来输入值的,叫add.asp
<html>
<title>添加示例</title>
<body>
<form name=form1 action=adduser.asp method=post>
<center>
<table with=500>
<tr>
<td colspan="2" align="center"><font size=5 color=blue>添加</font>
</td>
</tr>
<tr>
<td><font size=2>用户名:</font></td>
<td>
<input name=username type="text" maxlength="20">
</td>
</tr>
<tr>
<td><font size=2>密 码:</font></td>
<td>
<input type="password" name=password maxlength="20">
</td>
</tr>
<tr>
<td colspan="2" align=center>
<input type="submit" value=添加>
<input type="reset" value=重置>
</td>
</tr>
</table>
</center>
</form>
</body>
</html>
下面我们做adduser.asp,这个页面就是向数据库中添加值了
<!--#include file=conn.asp-->
'这里我们添加一个判断,用来判断是不是管理员,只有管理员才有权添加用户
<%
if isempty(session("admin")) or session("admin")="" then
response.redirect"login.asp"
end if
%>
<%
'-------------------为防止出错我们定义username和password----------------
dim username
dim password
'--------用request的form方法来接受add.asp页面传来的值,并付值给我们定义的username和password
username=request.form("username")
password=request.form("password")
'---------判断传来的值是不是空值
if username="" then
'用response的write的方法输出一个脚本
response.write"<script>alert('用户名不能为空')</script>"
response.end
end if
if password="" then
response.write"<script>alert('密码不能为空')</script>"
response.end
end if
'----------判断用户是不是已经存在了,如存在就提示,并返回。
set rs=server.cerateobject("adodb.recordset")
sql="select * from admin where admin_name='"&username&"'"
rs.open sql,conn,3,3
'如果用户存在
if not(rs.eof and rs.bof) then
response.write"<SCRIPT language=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"<SCRIPT language=javascript>alert('添加成功,请返回');"
response.write"javascript:history.go(-1)</SCRIPT>"
response.redirect"add.asp"
end if
'---------最后不要忘记关闭数据连接,释放资源
rs.close
set rs=nothing
%>
----------------------------------------------------------------------------------------------------------------------
5天搞定asp第二天[续]
哈哈 第二天的那页放不下了就分开了
不要意思了
好了,现在我来做“更新”“删除”
这里的重点是要取的要删除的数据的编号,数据编号是唯一的不可重复的
首先我们把所有的用户有取出来 ,并放在一个页面上
先写的是更新哦
呵呵
删除和这个基本一样就是SQL的语句不同,要注意的是新闻的id是怎么样取得的!!!!
这才是本文的重点!!!!!!!!!
---注意数据库中没有权限的字段,自己添上就行了----------呵呵--------
------------------------------------------------admin_admin.asp显示页---------------------------------
<html>
<head>
<title>管理系统</title>
<body>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
</tr>
</table>
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#000000">
<tr align="center" bgcolor="#ffaaaa">
<td width="15%" height="24"> ID</td>
<td width="15%">用户</td>
<td width="20%">密码</td>
<td width="20%">权限</td>
<td width="15%">修改</td>
<td width="15%">删除</td>
</tr>
<%
Set rs=Server.CreateObject("ADODB.RecordSet")
sql="select * from admin order by id"
rs.Open sql,conn,1,1
while not rs.eof
if rs("aleave")="super" then aleave="超级管理员" end if
if rs("aleave")="check" then aleave="普通管理员" end if
%>
<tr align="center">
<td height="22"><%=rs("id")%></td>
<td><%=rs("admin")%></td>
<td><%=rs("password")%></td>
<td><%=aleave%></td>
<td><a href="admin_AdminModify.asp?id=<%=rs("id")%>">修改</a></td>
<td><a href="admin_AdminDel.asp?id=<%=rs("id")%>">删除</a></td>
</tr>
<%
rs.movenext
wend
rs.close
set rs=nothing
%>
</table>
</body>
</html>
----------------------编号id的接受页admin_AdminModify.asp-------------------------
<%
<!--#include file=conn.asp-->
'QueryString的方法取得用户id
id=request.QueryString("id")
set rs=server.createobject("adodb.recordset")
sql="select * from admin where id="&id
rs.open sql,conn,1,1
if rs.eof then
response.write"<SCRIPT language=javascript>alert('服务器出错,请联系管理员!');"
response.write"javascript:history.go(-1)</SCRIPT>"
else
admin=rs("admin")
password=rs("password")
aleave=rs("aleave")
<table>
<form method="POST" action="admin_adminSave.asp?id=<%=id%>">
<tr>
<td colspan=2 align=center><b>修 改 管 理 员 资 料</b></td>
</tr>
<tr>
<td width="30%" height="22" align="right">用户名:</td>
<td width="70%">
<input type="text" name="admin" value="<%=admin%>" size="20"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="30%" height="22" align="right">密码:</td>
<td width="70%">
<input type="text" name="password" value="<%=password%>" size="20"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="30%" height="22" align="right">权限:</td>
<td width="70%" height="22">
<select name="aleave" style="font-size:9pt" class="input">
<option value=super<%if aleave="super" then%> selected<%end if%超级管理员</option>
<option value=check<%if aleave="check" then%> selected<%end if%普通管理员</option>
</select>
</td>
</tr>
<tr align="center" bgcolor="#FFFFFF" height="24">
<td height="30" colspan=2>
<input type="hidden" value="edit" name="act">
<input name="cmdok" type="submit" id="cmdok" value=" 修 改 ">
<input name="cmdcance" type="reset" id="cmdcance" value=" 清 除 ">
</td>
</tr>
</form>
</table>
<%
end if
rs.close
set rs=nothing
%>
%>
-----------------------------------------------------------------
下面我们看看接收页怎么写的吧!这页面就是功能页了!
<!--#include file=conn.asp-->
<%
admin=request.form("admin")
password=request.form("password")
aleave=request.form("aleave")
if admin="" or password="" then
response.write"<SCRIPT language=javascript>alert('管理员名称和密码都不能为空!');"
response.write"javascript:history.go(-1)</SCRIPT>"
Response.End
end if
set rs=server.CreateObject("ADODB.RecordSet")
if request("act")="edit" and request.QueryString("id")<>"" then
id=request("id")
sql="select * from admin where id="& request.QueryString("id")
rs.open sql,conn,3,2
if not rs.eof then
rs("aleave")=aleave
rs("admin")=admin
rs("password")=encrypt(password)
rs.update
end if
rs.close
elseif request("act")="add" then
sql="select * from admin where admin_name='"&admin&"'"
rs.open sql,conn,3,2
if (rs.eof and rs.bof) then
rs.addnew
rs("aleave")=aleave
rs("admin")=admin
rs("password")=password
rs.update
end if
rs.close
end if
set rs=nothing
conn.close
set conn=nothing
response.redirect "admin_admin.asp"
%>
--------------------------------删除------------------------------------
有了上面的基础写删除就更简单了,我们继续哦
是不是很简单哦
<!--#include file="conn.asp" -->
<%
if isempty(session("admin")) or session("admin")="" then
response.redirect"login.asp"
end if
%>
<%
set rs=server.CreateObject("ADODB.RecordSet")
rs.open "delete * from admin where id="&request.QueryString("id"),conn,1
set rs=nothing
response.redirect "admin_admin.asp"
%>
最后我们把今天说的东西在总结一下,今天我们做了增,删,改
这里,增加我们主要是用到了数据库的操作,在写添加的时候用sql的insert语句直接添加也行,我们用的是rs.addnew的方法
喜欢怎么用就怎么用了,,,呵呵
随心情了,
在就是修改和删除,这两个功能最总要的就是怎么样锁定要修改的那条记录,
这里的方法就多了,可以用QueryString的方法取得用户id,也可以用"隐藏域的方法取的id"
我们也可以把增,删,改写在一个页面中 这样显得整洁一些,
呵呵,这个也就看个人爱好了,刚开始学的话就好用多个页实现功能,
等时间常了 熟练了在用一个页面写
下面大家就来看看我是怎么样用隐藏域的方法来实现一页完成这写功能的和怎么样用"隐藏域的方法取的id"的???????
-------------------------------一个页面的增,删,改------------------------------------
<!--#include file="conn.asp"-->
<%
info=trim(request("info"))
Set rs=Server.CreateObject("ADODB.Recordset")
select case info
case "add"
sql="SELECT * FROM link"
rs.Open sql,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 * FROM link where id="&trim(request("id"))
rs.Open sql,conn,1,3
rs("name")=trim(request("webname"))
rs("url")=trim(request("url"))
rs.Update
Response.Redirect"mody.asp"
case "del"
sql="delete * FROM link where id="&trim(request("id"))
rs.Open sql,conn,1,3
Response.Redirect"mody.asp"
case else
Set rs=Server.CreateObject("ADODB.Recordset")
sql="SELECT * FROM link order by id asc"
rs.Open sql,conn,1,3
%>
<table border="1" width="500" align=center cellspacing="0">
<tr>
<td width="33%" align="center">网站名称</td>
<td width="33%" align="center">网站地址</td>
<td width="34%" align="center">操作</td>
<form method="POST" action="mody.asp">
<tr>
<td width="33%"><input type="hidden" name="info" value="add"><input type="text" name="webname" size="20"></td>
<td width="33%"><input type="text" name="url" size="20"></td>
<td width="34%"><input type="submit" value=" 添加 " name="B1"></td>
</tr></form>
<%do while not rs.eof%><form method="POST" action="mody.asp">
<tr>
<td width="33%"><input type="hidden" name="info" value="mod"><input type="hidden" name="id" value="<%=rs("id")%
>"><input type="text" name="webname" size="20" value="<%=rs("name")%>"></td>
<td width="33%"><input type="text" name="url" size="20" value="<%=rs("url")%>"></td>
<td width="34%"><input type="submit" value="修改" name="B1"> <input type="button" name="Submit" value="删除"
onClick="javascript:location='mody.asp?info=del&id=<%=rs("id")%>'"></td>
</tr></form><%rs.movenext
loop%>
</table>
<%end select%>
<%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
%>
这样我们就能在我们需要的地方进行判断了
代码如下:
<%
if session("aleave")="" then
response.redirect "adminlogin.asp"
response.end
end if
%>
这里是cookies的验证判断:
<%
if request.cookies("adminok")="" then
response.redirect"login.asp"
end if
%>
这样没有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={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
conn.open strSQL
%>
为了保证数据库的安全呢,我们可以把数据库的扩展名换成.asp的,也可以是asa,
最好把数据库的名字弄的复杂点,
在就是数据库的字段也要弄的复杂点哦,要不然人家用软件猜解也是很容易的哦
并在页面中过滤掉非法的字符,这样能安全点(网站有很多的防SQL注入的代码哦,也有很多的注入工具)
还是自己把网站弄的安全点吧,
并且用例子来演示了怎么样实现整个功能,希望大家能多看看代码,多动手来打打代码,还有就是尽量用“记事本”编写代码,
不要上来就用一些开发工具和代码提示的软件,这样不利于我们对代码的理解和记忆。
今天就到这里,多看看我们第二天讲的东西那是asp数据管理最重要的地方
明天我们讲解asp中的分页
呵呵 大家明天见哦 晚安!
---------------------------------------------------------------------------------------------------
第四天
利用ASP分页显示实例
这里我们要说的就是ASP中比较复杂的分页技术了,代码有点多,但是不是很复杂,
大家多看几便就能理解了,
首先我们先理解一下分页的原理:
在前几天我们了解了Recordset对象的以上属性和方法后,
我们来考虑一下,如何运用 它们来达到我们分页显示的目的。
我们可以为PageSize属性设置一个值,从而指定从记录组中取出的构成一个页的行数;
然后通过RecordCount属性来确定记录的总数;
再用记录总数除以PageSize就可得到所显示的页面总数;
最后通过AbsolutePage属性就能完成对指定页的访问。
好象很并不复杂呀,下面让我们来看看程序该如何实现呢?
代码主要用到Connection、RecordSet这两个对象,程序中的数据库为Access库,
采用OLEDB方式连接库。
<%
Set conn = Server.CreateObject("ADODB.Connection")
strcon="provider=microsoft.jet.oledb.4.0;data source="& _
server.mappath("mdb.mdb")
conn.Open strcon
Set rs = Server.CreateObject ("ADODB.Recordset")
sql="select * from table order by id desc"
rs.Open sql, conn, 1
page=1 ' 设置变量PAGE=1
rs.PageSize = 5 '每页显示记录数
if Not IsEmpty(Request("Page")) then '如果Page已经初始化...
Page = CInt(Request("Page")) '接收Page并化为数字型赋给Page变量
if Page > rs.PageCount then '如果接收的页数大于总页数
rs.AbsolutePage = rs.PageCount '设置当前显示页等于最后页
elseif Page <= 0 then '如果page小于等于0
Page = 1 '设置PAGE等于第一页
else
rs.AbsolutePage = Page '如果大于零,显示当前页等于接收的页数
end if
End if
Page = rs.AbsolutePage
%>
<%
For i = 1 to rs.PageSize
if rs.EOF then
Exit For
end if '利用for next 循环依次读出记录
%>
'一个页中显示多少条数据Rs.pagesize=5,
把5改为你想显示的记录数.比如说
改为10.那么每页就是显示10页.还需要修改的是select语句.就是你要检索的数据库了.
也就是说放到任何一个系统中上面的代码只需很小的改动都可以直接拿过来用.
然后:就是要循环读出记录的显示内容了..............比如
<table width=50 border=1 align=center><tr><TD><% =rs("内容") %></td></tr></table><%rs.MoveNextnext%>
当然也可以改为response.write输出.
最后,添加"下一页,上一页"的链接:
<%if request("page")>1 then%><a Href="test.asp?Page=<% = 1%>">首页</a> <a Href="test.asp?Page=<% =request("page") -1 %>">上一
页</a><%end if %><%if request("page")<>rs.pagecount then %><a Href="test.asp?Page=<% =request("page") + 1%>">下一页</a> <a
Href="test.asp?Page=<% = rs.PageCount%>">尾页</a> <% end if %>
上面的代码只管复制粘贴.只需把"page.asp"改成你自己的文件名就可以了。
随便把这段代码放在什么地方?就是你想让它出现下一页下一页链接的地方吧.
最后.关闭记录集释放资源:
<%
rs.close
Set rs = Nothing
conn.close
set conn=nothing
%>
--------------------------------------------------------------------------------
要克服最后一页中的"下一页"仍处于连接状态有一个办法.就是把程序中稍加改动如下:
<%if request("page")<>rs.pagecount then %>
<a Href="test.asp?Page=<% =request("page") + 1%>">下一页</a>
<% else response.write"下一页"%>
就是此时把"下一页"设置成非连接状态
For i = 1 to rs.PageSize
if rs.EOF then
Exit For
end if '利用for next 循环依次读出记录
使用的是Do while。
分页代码的示例:::
-----------------------------------------------------------------------------------
<%
db="数据地址.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
conns="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
conn.Open conns
Set rs = Server.CreateObject("ADODB.Recordset")
sql="Select * from 表名 order by id desc"
rs.open sql,conn,1,1
if rs.eof then
response.write("没有记录")
else
Page=Int(Abs(Request("page")))
IF not IsNumeric(Request("page")) Or IsEmpty(Request("page")) Then page=1
rs.pagesize = 10 '每页显示记录数
total = rs.RecordCount
mp = rs.pagesize
rs.absolutepage = page
i=0:k=0
do while not rs.eof and mp>0:k=k+1
response.write("显示第"&rs("id")&"条记录")
i=i+1
mp=mp-1
rs.movenext
loop
if page>rs.pagecount then Response.redirect("index.asp?page="&rs.pagecount)
if page>1 then
response.Write("<a href='index.asp?&page=1' title='首页'>首页</a>")
response.Write(" <a href='index.asp?page="&page-1&"' title='上一页'>上一页</a> ")
end if
response.Write("第"&page&"/"&rs.pagecount&"页 共"&total&"条记录 本页显示第"&(page-1)*rs.pagesize+1&"条到第"&(page-1)
*rs.pagesize+k&"条 ")
if page<rs.pagecount then
response.Write("<a href='index.asp?page="&page+1&"' title='下一页'>下一页</a>")
response.Write(" <a href='index.asp?page="&rs.pagecount&"' title='尾页'>尾页</a>")
end if
end if
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
这样一个分页的程序就算是做好了,这个程序非常简单而且便于理解,是个学习的好例子。
大家在做一个程序前应该多想想怎么样实现这个功能,然后在动手去写这个代码,
这样才能做到胸有成竹。
呵呵,有时候学点东西真的很不爽哦,
又快到新的一天了
明天我们粗率的讲解一下ASP的组件,这样asp的精华我们也就全部讲完了,
以后的学习过程就要靠我们自己努力了,
最好的学习方法就是多看示例,呵呵
美好的明天一定会来的~~~~~~~~~~~~~~~~~~~blog.91time.com
----------------------------------------------------------------------------------------------------------------
第五天
今天我们来说说ASP组件,
asp的组件的功能是十分强大的,今天我们就来简单的说说
要用asp组件就要创建asp组件
在一个asp页面中创建asp组件,需要使用server内置对象的createobject的方法,
我们来看例子:
<%
Set JMail = Server.CreateObject("JMail.Message")
%>
上面我们创建了JMail组件对象的示例,并付值给JMail
有的asp组件还要求注册的哦,而且,每个asp组件都有自己属性和方法,
这个就要大家自己平时多看看了哦
用什么组件就多了解那个组件吧
呵呵
下面我们用现在常用的Jmail组件来详细说明组件的用法:
在Asp程序中用Jmail发邮件的比较多,主要是因为多数虚拟主机支持他,其它的支持的较少。下面是一
个Jmail发邮件的例子代码:
如果您在自己的机器上试,请下载Jmail.dll,下载解压后,双击Setup.bat 即可完成安装!
<%
On error resume next
Dim JMail, contentId
Set JMail = 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><META content=zh-cn http-equiv=Content-Language><meta http-
equiv=""Content-Type"" content=""text/html; charset=gb2312""><style type=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><font color=red>邮件正文
</font><br><font color=green>邮件正文</font><br><b>邮件正文</b></body></html>"
' 邮件主体(文本部分)
JMail.Body = "我们的邮件采用了HTML格式,但是您的邮件查看软件可能不支持。。。邮件正文,邮件正
文,邮件正文"
' 发送【调用格式:objJMail.Send([username:password@]SMTPServerAddress[:Port])】
JMail.Send("smtp.163.com")
' 关闭并清除对象
JMail.Close()
Set JMail = Nothing
if err.number<>0 then
response.write "发送发送失败!"
else
response.write "邮件发送成功!"
end if
%>
如果想要Jmail的详细方法就来我的博客看看吧!http://blog.91time.com
呵呵 这样就可以用jmail来发邮件了
能发邮件的组件还有 Cdonts组件等等,
asp 的功能远远不只这些,象用asp的fso(文件系统组件)等等,很多强大的功能都等我们去学习,
五天搞定ASP就是给出学的朋友领条路,
这五天说的都是ASP的精华,大家有空多看看,就能理解了,
谢谢大家的支持,
如果有什么问题请来我的博客http://blog.91time.com
※※※※※呵呵 ,
如果那个高手看到哥们有写错的地方请指出,
我一定改正,※※※※※※※※※※
识只有共享才能发展,不要吝啬你的知识!!!!
好了我们闲话少说现在就开始吧!
首先,我先把ASP说一下,asp就是 Active Server Pages的简写,
我们为了方便理解那,就把asp想成是 插入到HTml中的一种脚本语言吧,这样理解起来方便。
书上都是以hello world的代码开始的,我们也这样开始吧!
这里我们就开始以示例讲解了:
〈html〉
<title>hello world</title>
<body>
<%response.write("hello world")%>
</body>
</html>
保存成test.asp,调试一下 就能看到hello world 了。
这里先让大家看看他是怎么样插入到HTML中的(asp程序是放在"<% %>"中间的)
当然我们也可以在response.write中输出HTML标记,比如 :
<%response.write"<font size=20 color=red>你好</font>"%>
就能看到一个红色的20号的"你好"
接下来我们就说
asp中有六大内置对象,分别是:
Request: 负责从用户端接受信息
Response:传递信息给用户
Server: 控制asp运行环境
session: 负责存储个别用户信息
Application:负责存储数据以提供多个用户的使用
objectcontext:可提供asp程序直接配合MTS进行分散事物处理
这其中我们就常用的就是:Request,Response,Server,session,Application
在本文中会逐一讲到,
刚才我们用了六大内置对象中的Response的write方法输出了hello world
下面我们就用一个例子来讲解request和response的用法:
首先,我们要用到html的form标签来传递值:
一,我们先做个表单页面,用来输入数据,这个页面就叫login.asp
<html>
<title>request和response的演示(值的传递和输出)</title>
<body>
<form name=form1 action=checklogin.asp method=post>
<center>
<table with=500>
<tr>
<td colspan="2" align="center"><font size=5 color=blue>用户登录入口</font>
</td>
</tr>
<tr>
<td><font size=2>用户名:</font></td>
<td>
<input name=username type="text" maxlength="20">
</td>
</tr>
<tr>
<td><font size=2>密 码:</font></td>
<td>
<input type="password" name=password maxlength="20">
</td>
</tr>
<tr>
<td colspan="2" align=center>
<input type="submit" value=登录>
<input type="reset" value=重置>
</td>
</tr>
</table>
</center>
</form>
</body>
</html>
二,我们在做一个页面来接受这些数据,这个页面就叫checklogin.asp
<%
'-------------------为防止出错我们定义username和password----------------
dim username
dim password
'--------用request的form方法来接受login.asp页面传来的值,并付值给我们定义的username和password
username=request.form("username")
password=request.form("password")
'---------判断传来的值是不是空值
if username="" then
'用response的write的方法输出一个脚本
response.write"<script>alert('用户名不能为空')</script>"
response.end
end if
if password="" then
response.write"<script>alert('密码不能为空')</script>"
response.end
end if
'----------判断用户名和密码是不是一样的,如果一样的输出"登陆成功"并把session的标志给这个用户,否则就输出"登陆失败"
if username="admin" and password="admin" then
response.write"登陆成功"
session("loginok")=username
else
response.write"登陆失败"
'重定向到login.asp
response.redirect"login.asp"
end if
%>
这里我们用到了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 [条件] order by [条件] desc
其中,desc降序,默认是asc升序,
例子:select * from news where news_id='"&news_id&"' order by news_id desc
意思就是查询news表中的"*"代表所有数据,条件是news_id等于 news_id然后按照news_id 的降序排列
在查询里还能用到group by分组排序等等,这里就不系说了。
2,count()函数用来计算记录的行数。
例:select count(*) from news
计算数据库中有多少行
3,sum()函数用来计算表达试中的项目和。
例:select age,sum(number) from person where age>20 group by age
6,top关键字,限制返回记录的行数
-----(二)--插入---------
insert 语句
格式如下:
insert into <表名>[<字段1>,<字段2>……] values[常量1,…………]
例:insert into news(id,news) values(1,'新闻')
---(三)--更新-------
update语句
格式:
update<表名> set <列名>=<表达式>,<列名1>=<表达式1>……
where <条件>
例:update news set content=最新消息 where news_id='"&news_id&"'
-----(四)---删除----------
delete语句
格式:delete from <表名> where 条件
例:delete from news where news_id>20
好了sql语句我们就说这么多吧,下面我们开始创建个数据库,这里我们就用SQL数据库吧
打开" 查询分析器"
'创建个数据库叫news
create database news
use news
create table admin
(
id int primany key,
admin_name varchar(20) not null,
admin_pwd varchar(20) not null,
)
'然后我们插入一条数据
insert into admin values(1,'admin','admin')
'然后我们用select * from 查询一下
select * from admin
就会看到我们的数据了
好了,我们打开昨天做的登陆严整的代码,这里我们回顾一下吧,做天我们用了两个页来实现的会员登陆的验证,
这两个页分别是(登陆页login.asp)和(验证页checklogin.asp),
现在我们没有做数据库验证,
(登陆页login.asp)页我们不用改动,
下面我们只需改动(验证页checklogin.asp),就行了,
这里我们要做个连接数据库的页面文件,名字就叫conn.asp吧
代码如下
<%
dim conn,dbuid,dbpwd,dBName,dbip
dbuid="sa" '数据库登陆名
dbpwd="123456" '数据库密码
dBName="news" '数据库名称
dbip="(local)" '可为IP '数据库所在地址,如果是本地数据库则为:(local)
'---------------------------------------------------------------------------
set conn=Server.CreateObject("adodb.Connection")
Conn.Open "PROVIDER=SQLOLEDB.1;Data Source="&dbip&";Initial Catalog="&dBName&";Persist Security Info=True;User
ID="&dbuid&";Password="&dbpwd&";Connect Timeout=30"
If Err Then
err.Clear
set conn=nothing
Response.Write "无法连接MSSQL"
Response.End
End If
%>
打开checklogin.asp代码,
首先在页面上我们要引用数据库连接文件
<!--#include file=conn.asp-->
<%
'-------------------为防止出错我们定义username和password----------------
dim username
dim password
'--------用request的form方法来接受login.asp页面传来的值,并付值给我们定义的username和password
username=request.form("username")
password=request.form("password")
'---------判断传来的值是不是空值
if username="" then
'用response的write的方法输出一个脚本
response.write"<script>alert('用户名不能为空')</script>"
response.end
end if
if password="" then
response.write"<script>alert('密码不能为空')</script>"
response.end
end if
'----------判断用户名和密码是不是一样的,如果一样的输出"登陆成功"并把session的标志给这个用户,否则就输出"登陆失败"
'------------这里我们就要在数据库里面比较两个值了
set rs=server.cerateobject("adodb.recordset")
sql="select * from admin where admin_name='"&username&"' and admin_pwd='"&password&"' "
rs.open sql,conn,1,1
'如果用户不存在
if rs.eof and rs.bof then
response.write"<SCRIPT language=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"
end if
'---------最后不要忘记关闭数据连接,释放资源
rs.close
set rs=nothing
%>
这里我们做好了一个简单的登陆严整,比如我们还可以用session来限制登陆的次数,或者登陆人的权限等等,
如有需要来blog看看哦,都有相应的文章.http://blog.91time.com
接下来我们做添加把,哈哈哈 ,这个和上面的例子一样的简单
为了便于理解我都做成了两个页面,在本节的最后,我会用"隐藏域的方法做个(增,删,改)在一个页的例子"
我们继续吧
和上一个例子一样,这个页面还是用来输入值的,叫add.asp
<html>
<title>添加示例</title>
<body>
<form name=form1 action=adduser.asp method=post>
<center>
<table with=500>
<tr>
<td colspan="2" align="center"><font size=5 color=blue>添加</font>
</td>
</tr>
<tr>
<td><font size=2>用户名:</font></td>
<td>
<input name=username type="text" maxlength="20">
</td>
</tr>
<tr>
<td><font size=2>密 码:</font></td>
<td>
<input type="password" name=password maxlength="20">
</td>
</tr>
<tr>
<td colspan="2" align=center>
<input type="submit" value=添加>
<input type="reset" value=重置>
</td>
</tr>
</table>
</center>
</form>
</body>
</html>
下面我们做adduser.asp,这个页面就是向数据库中添加值了
<!--#include file=conn.asp-->
'这里我们添加一个判断,用来判断是不是管理员,只有管理员才有权添加用户
<%
if isempty(session("admin")) or session("admin")="" then
response.redirect"login.asp"
end if
%>
<%
'-------------------为防止出错我们定义username和password----------------
dim username
dim password
'--------用request的form方法来接受add.asp页面传来的值,并付值给我们定义的username和password
username=request.form("username")
password=request.form("password")
'---------判断传来的值是不是空值
if username="" then
'用response的write的方法输出一个脚本
response.write"<script>alert('用户名不能为空')</script>"
response.end
end if
if password="" then
response.write"<script>alert('密码不能为空')</script>"
response.end
end if
'----------判断用户是不是已经存在了,如存在就提示,并返回。
set rs=server.cerateobject("adodb.recordset")
sql="select * from admin where admin_name='"&username&"'"
rs.open sql,conn,3,3
'如果用户存在
if not(rs.eof and rs.bof) then
response.write"<SCRIPT language=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"<SCRIPT language=javascript>alert('添加成功,请返回');"
response.write"javascript:history.go(-1)</SCRIPT>"
response.redirect"add.asp"
end if
'---------最后不要忘记关闭数据连接,释放资源
rs.close
set rs=nothing
%>
----------------------------------------------------------------------------------------------------------------------
5天搞定asp第二天[续]
哈哈 第二天的那页放不下了就分开了
不要意思了
好了,现在我来做“更新”“删除”
这里的重点是要取的要删除的数据的编号,数据编号是唯一的不可重复的
首先我们把所有的用户有取出来 ,并放在一个页面上
先写的是更新哦
呵呵
删除和这个基本一样就是SQL的语句不同,要注意的是新闻的id是怎么样取得的!!!!
这才是本文的重点!!!!!!!!!
---注意数据库中没有权限的字段,自己添上就行了----------呵呵--------
------------------------------------------------admin_admin.asp显示页---------------------------------
<html>
<head>
<title>管理系统</title>
<body>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> </td>
</tr>
</table>
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#000000">
<tr align="center" bgcolor="#ffaaaa">
<td width="15%" height="24"> ID</td>
<td width="15%">用户</td>
<td width="20%">密码</td>
<td width="20%">权限</td>
<td width="15%">修改</td>
<td width="15%">删除</td>
</tr>
<%
Set rs=Server.CreateObject("ADODB.RecordSet")
sql="select * from admin order by id"
rs.Open sql,conn,1,1
while not rs.eof
if rs("aleave")="super" then aleave="超级管理员" end if
if rs("aleave")="check" then aleave="普通管理员" end if
%>
<tr align="center">
<td height="22"><%=rs("id")%></td>
<td><%=rs("admin")%></td>
<td><%=rs("password")%></td>
<td><%=aleave%></td>
<td><a href="admin_AdminModify.asp?id=<%=rs("id")%>">修改</a></td>
<td><a href="admin_AdminDel.asp?id=<%=rs("id")%>">删除</a></td>
</tr>
<%
rs.movenext
wend
rs.close
set rs=nothing
%>
</table>
</body>
</html>
----------------------编号id的接受页admin_AdminModify.asp-------------------------
<%
<!--#include file=conn.asp-->
'QueryString的方法取得用户id
id=request.QueryString("id")
set rs=server.createobject("adodb.recordset")
sql="select * from admin where id="&id
rs.open sql,conn,1,1
if rs.eof then
response.write"<SCRIPT language=javascript>alert('服务器出错,请联系管理员!');"
response.write"javascript:history.go(-1)</SCRIPT>"
else
admin=rs("admin")
password=rs("password")
aleave=rs("aleave")
<table>
<form method="POST" action="admin_adminSave.asp?id=<%=id%>">
<tr>
<td colspan=2 align=center><b>修 改 管 理 员 资 料</b></td>
</tr>
<tr>
<td width="30%" height="22" align="right">用户名:</td>
<td width="70%">
<input type="text" name="admin" value="<%=admin%>" size="20"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="30%" height="22" align="right">密码:</td>
<td width="70%">
<input type="text" name="password" value="<%=password%>" size="20"></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="30%" height="22" align="right">权限:</td>
<td width="70%" height="22">
<select name="aleave" style="font-size:9pt" class="input">
<option value=super<%if aleave="super" then%> selected<%end if%超级管理员</option>
<option value=check<%if aleave="check" then%> selected<%end if%普通管理员</option>
</select>
</td>
</tr>
<tr align="center" bgcolor="#FFFFFF" height="24">
<td height="30" colspan=2>
<input type="hidden" value="edit" name="act">
<input name="cmdok" type="submit" id="cmdok" value=" 修 改 ">
<input name="cmdcance" type="reset" id="cmdcance" value=" 清 除 ">
</td>
</tr>
</form>
</table>
<%
end if
rs.close
set rs=nothing
%>
%>
-----------------------------------------------------------------
下面我们看看接收页怎么写的吧!这页面就是功能页了!
<!--#include file=conn.asp-->
<%
admin=request.form("admin")
password=request.form("password")
aleave=request.form("aleave")
if admin="" or password="" then
response.write"<SCRIPT language=javascript>alert('管理员名称和密码都不能为空!');"
response.write"javascript:history.go(-1)</SCRIPT>"
Response.End
end if
set rs=server.CreateObject("ADODB.RecordSet")
if request("act")="edit" and request.QueryString("id")<>"" then
id=request("id")
sql="select * from admin where id="& request.QueryString("id")
rs.open sql,conn,3,2
if not rs.eof then
rs("aleave")=aleave
rs("admin")=admin
rs("password")=encrypt(password)
rs.update
end if
rs.close
elseif request("act")="add" then
sql="select * from admin where admin_name='"&admin&"'"
rs.open sql,conn,3,2
if (rs.eof and rs.bof) then
rs.addnew
rs("aleave")=aleave
rs("admin")=admin
rs("password")=password
rs.update
end if
rs.close
end if
set rs=nothing
conn.close
set conn=nothing
response.redirect "admin_admin.asp"
%>
--------------------------------删除------------------------------------
有了上面的基础写删除就更简单了,我们继续哦
是不是很简单哦
<!--#include file="conn.asp" -->
<%
if isempty(session("admin")) or session("admin")="" then
response.redirect"login.asp"
end if
%>
<%
set rs=server.CreateObject("ADODB.RecordSet")
rs.open "delete * from admin where id="&request.QueryString("id"),conn,1
set rs=nothing
response.redirect "admin_admin.asp"
%>
最后我们把今天说的东西在总结一下,今天我们做了增,删,改
这里,增加我们主要是用到了数据库的操作,在写添加的时候用sql的insert语句直接添加也行,我们用的是rs.addnew的方法
喜欢怎么用就怎么用了,,,呵呵
随心情了,
在就是修改和删除,这两个功能最总要的就是怎么样锁定要修改的那条记录,
这里的方法就多了,可以用QueryString的方法取得用户id,也可以用"隐藏域的方法取的id"
我们也可以把增,删,改写在一个页面中 这样显得整洁一些,
呵呵,这个也就看个人爱好了,刚开始学的话就好用多个页实现功能,
等时间常了 熟练了在用一个页面写
下面大家就来看看我是怎么样用隐藏域的方法来实现一页完成这写功能的和怎么样用"隐藏域的方法取的id"的???????
-------------------------------一个页面的增,删,改------------------------------------
<!--#include file="conn.asp"-->
<%
info=trim(request("info"))
Set rs=Server.CreateObject("ADODB.Recordset")
select case info
case "add"
sql="SELECT * FROM link"
rs.Open sql,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 * FROM link where id="&trim(request("id"))
rs.Open sql,conn,1,3
rs("name")=trim(request("webname"))
rs("url")=trim(request("url"))
rs.Update
Response.Redirect"mody.asp"
case "del"
sql="delete * FROM link where id="&trim(request("id"))
rs.Open sql,conn,1,3
Response.Redirect"mody.asp"
case else
Set rs=Server.CreateObject("ADODB.Recordset")
sql="SELECT * FROM link order by id asc"
rs.Open sql,conn,1,3
%>
<table border="1" width="500" align=center cellspacing="0">
<tr>
<td width="33%" align="center">网站名称</td>
<td width="33%" align="center">网站地址</td>
<td width="34%" align="center">操作</td>
<form method="POST" action="mody.asp">
<tr>
<td width="33%"><input type="hidden" name="info" value="add"><input type="text" name="webname" size="20"></td>
<td width="33%"><input type="text" name="url" size="20"></td>
<td width="34%"><input type="submit" value=" 添加 " name="B1"></td>
</tr></form>
<%do while not rs.eof%><form method="POST" action="mody.asp">
<tr>
<td width="33%"><input type="hidden" name="info" value="mod"><input type="hidden" name="id" value="<%=rs("id")%
>"><input type="text" name="webname" size="20" value="<%=rs("name")%>"></td>
<td width="33%"><input type="text" name="url" size="20" value="<%=rs("url")%>"></td>
<td width="34%"><input type="submit" value="修改" name="B1"> <input type="button" name="Submit" value="删除"
onClick="javascript:location='mody.asp?info=del&id=<%=rs("id")%>'"></td>
</tr></form><%rs.movenext
loop%>
</table>
<%end select%>
<%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
%>
这样我们就能在我们需要的地方进行判断了
代码如下:
<%
if session("aleave")="" then
response.redirect "adminlogin.asp"
response.end
end if
%>
这里是cookies的验证判断:
<%
if request.cookies("adminok")="" then
response.redirect"login.asp"
end if
%>
这样没有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={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
conn.open strSQL
%>
为了保证数据库的安全呢,我们可以把数据库的扩展名换成.asp的,也可以是asa,
最好把数据库的名字弄的复杂点,
在就是数据库的字段也要弄的复杂点哦,要不然人家用软件猜解也是很容易的哦
并在页面中过滤掉非法的字符,这样能安全点(网站有很多的防SQL注入的代码哦,也有很多的注入工具)
还是自己把网站弄的安全点吧,
并且用例子来演示了怎么样实现整个功能,希望大家能多看看代码,多动手来打打代码,还有就是尽量用“记事本”编写代码,
不要上来就用一些开发工具和代码提示的软件,这样不利于我们对代码的理解和记忆。
今天就到这里,多看看我们第二天讲的东西那是asp数据管理最重要的地方
明天我们讲解asp中的分页
呵呵 大家明天见哦 晚安!
---------------------------------------------------------------------------------------------------
第四天
利用ASP分页显示实例
这里我们要说的就是ASP中比较复杂的分页技术了,代码有点多,但是不是很复杂,
大家多看几便就能理解了,
首先我们先理解一下分页的原理:
在前几天我们了解了Recordset对象的以上属性和方法后,
我们来考虑一下,如何运用 它们来达到我们分页显示的目的。
我们可以为PageSize属性设置一个值,从而指定从记录组中取出的构成一个页的行数;
然后通过RecordCount属性来确定记录的总数;
再用记录总数除以PageSize就可得到所显示的页面总数;
最后通过AbsolutePage属性就能完成对指定页的访问。
好象很并不复杂呀,下面让我们来看看程序该如何实现呢?
代码主要用到Connection、RecordSet这两个对象,程序中的数据库为Access库,
采用OLEDB方式连接库。
<%
Set conn = Server.CreateObject("ADODB.Connection")
strcon="provider=microsoft.jet.oledb.4.0;data source="& _
server.mappath("mdb.mdb")
conn.Open strcon
Set rs = Server.CreateObject ("ADODB.Recordset")
sql="select * from table order by id desc"
rs.Open sql, conn, 1
page=1 ' 设置变量PAGE=1
rs.PageSize = 5 '每页显示记录数
if Not IsEmpty(Request("Page")) then '如果Page已经初始化...
Page = CInt(Request("Page")) '接收Page并化为数字型赋给Page变量
if Page > rs.PageCount then '如果接收的页数大于总页数
rs.AbsolutePage = rs.PageCount '设置当前显示页等于最后页
elseif Page <= 0 then '如果page小于等于0
Page = 1 '设置PAGE等于第一页
else
rs.AbsolutePage = Page '如果大于零,显示当前页等于接收的页数
end if
End if
Page = rs.AbsolutePage
%>
<%
For i = 1 to rs.PageSize
if rs.EOF then
Exit For
end if '利用for next 循环依次读出记录
%>
'一个页中显示多少条数据Rs.pagesize=5,
把5改为你想显示的记录数.比如说
改为10.那么每页就是显示10页.还需要修改的是select语句.就是你要检索的数据库了.
也就是说放到任何一个系统中上面的代码只需很小的改动都可以直接拿过来用.
然后:就是要循环读出记录的显示内容了..............比如
<table width=50 border=1 align=center><tr><TD><% =rs("内容") %></td></tr></table><%rs.MoveNextnext%>
当然也可以改为response.write输出.
最后,添加"下一页,上一页"的链接:
<%if request("page")>1 then%><a Href="test.asp?Page=<% = 1%>">首页</a> <a Href="test.asp?Page=<% =request("page") -1 %>">上一
页</a><%end if %><%if request("page")<>rs.pagecount then %><a Href="test.asp?Page=<% =request("page") + 1%>">下一页</a> <a
Href="test.asp?Page=<% = rs.PageCount%>">尾页</a> <% end if %>
上面的代码只管复制粘贴.只需把"page.asp"改成你自己的文件名就可以了。
随便把这段代码放在什么地方?就是你想让它出现下一页下一页链接的地方吧.
最后.关闭记录集释放资源:
<%
rs.close
Set rs = Nothing
conn.close
set conn=nothing
%>
--------------------------------------------------------------------------------
要克服最后一页中的"下一页"仍处于连接状态有一个办法.就是把程序中稍加改动如下:
<%if request("page")<>rs.pagecount then %>
<a Href="test.asp?Page=<% =request("page") + 1%>">下一页</a>
<% else response.write"下一页"%>
就是此时把"下一页"设置成非连接状态
For i = 1 to rs.PageSize
if rs.EOF then
Exit For
end if '利用for next 循环依次读出记录
使用的是Do while。
分页代码的示例:::
-----------------------------------------------------------------------------------
<%
db="数据地址.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
conns="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
conn.Open conns
Set rs = Server.CreateObject("ADODB.Recordset")
sql="Select * from 表名 order by id desc"
rs.open sql,conn,1,1
if rs.eof then
response.write("没有记录")
else
Page=Int(Abs(Request("page")))
IF not IsNumeric(Request("page")) Or IsEmpty(Request("page")) Then page=1
rs.pagesize = 10 '每页显示记录数
total = rs.RecordCount
mp = rs.pagesize
rs.absolutepage = page
i=0:k=0
do while not rs.eof and mp>0:k=k+1
response.write("显示第"&rs("id")&"条记录")
i=i+1
mp=mp-1
rs.movenext
loop
if page>rs.pagecount then Response.redirect("index.asp?page="&rs.pagecount)
if page>1 then
response.Write("<a href='index.asp?&page=1' title='首页'>首页</a>")
response.Write(" <a href='index.asp?page="&page-1&"' title='上一页'>上一页</a> ")
end if
response.Write("第"&page&"/"&rs.pagecount&"页 共"&total&"条记录 本页显示第"&(page-1)*rs.pagesize+1&"条到第"&(page-1)
*rs.pagesize+k&"条 ")
if page<rs.pagecount then
response.Write("<a href='index.asp?page="&page+1&"' title='下一页'>下一页</a>")
response.Write(" <a href='index.asp?page="&rs.pagecount&"' title='尾页'>尾页</a>")
end if
end if
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
这样一个分页的程序就算是做好了,这个程序非常简单而且便于理解,是个学习的好例子。
大家在做一个程序前应该多想想怎么样实现这个功能,然后在动手去写这个代码,
这样才能做到胸有成竹。
呵呵,有时候学点东西真的很不爽哦,
又快到新的一天了
明天我们粗率的讲解一下ASP的组件,这样asp的精华我们也就全部讲完了,
以后的学习过程就要靠我们自己努力了,
最好的学习方法就是多看示例,呵呵
美好的明天一定会来的~~~~~~~~~~~~~~~~~~~blog.91time.com
----------------------------------------------------------------------------------------------------------------
第五天
今天我们来说说ASP组件,
asp的组件的功能是十分强大的,今天我们就来简单的说说
要用asp组件就要创建asp组件
在一个asp页面中创建asp组件,需要使用server内置对象的createobject的方法,
我们来看例子:
<%
Set JMail = Server.CreateObject("JMail.Message")
%>
上面我们创建了JMail组件对象的示例,并付值给JMail
有的asp组件还要求注册的哦,而且,每个asp组件都有自己属性和方法,
这个就要大家自己平时多看看了哦
用什么组件就多了解那个组件吧
呵呵
下面我们用现在常用的Jmail组件来详细说明组件的用法:
在Asp程序中用Jmail发邮件的比较多,主要是因为多数虚拟主机支持他,其它的支持的较少。下面是一
个Jmail发邮件的例子代码:
如果您在自己的机器上试,请下载Jmail.dll,下载解压后,双击Setup.bat 即可完成安装!
<%
On error resume next
Dim JMail, contentId
Set JMail = 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><META content=zh-cn http-equiv=Content-Language><meta http-
equiv=""Content-Type"" content=""text/html; charset=gb2312""><style type=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><font color=red>邮件正文
</font><br><font color=green>邮件正文</font><br><b>邮件正文</b></body></html>"
' 邮件主体(文本部分)
JMail.Body = "我们的邮件采用了HTML格式,但是您的邮件查看软件可能不支持。。。邮件正文,邮件正
文,邮件正文"
' 发送【调用格式:objJMail.Send([username:password@]SMTPServerAddress[:Port])】
JMail.Send("smtp.163.com")
' 关闭并清除对象
JMail.Close()
Set JMail = Nothing
if err.number<>0 then
response.write "发送发送失败!"
else
response.write "邮件发送成功!"
end if
%>
如果想要Jmail的详细方法就来我的博客看看吧!http://blog.91time.com
呵呵 这样就可以用jmail来发邮件了
能发邮件的组件还有 Cdonts组件等等,
asp 的功能远远不只这些,象用asp的fso(文件系统组件)等等,很多强大的功能都等我们去学习,
五天搞定ASP就是给出学的朋友领条路,
这五天说的都是ASP的精华,大家有空多看看,就能理解了,
谢谢大家的支持,
如果有什么问题请来我的博客http://blog.91time.com
※※※※※呵呵 ,
如果那个高手看到哥们有写错的地方请指出,
我一定改正,※※※※※※※※※※
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年12月28日
2024年12月28日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]