摘要
本文概述了ACCESS数据库及其相关的一些知识,着重论述ACCESS数据库和ASP的中间技术,构建一个简单的留言板。具体的实现是构造一个留言板系统,能很方便的和同学沟通和交流。留言板具有功能强大、使用方便的特点。用户以个人的身份进入,查看留言,以及在留言板中写下自已要留言的内容。管理员可根椐管理员用户名和密码进入,进行适当的修改和删除。
在此设计中,主要的技术有:ASP,HTML,ADO等,用到的运行环境(操作系统,服务器)有WINDOWS98,PWS,和IE 5.0等,将它们集成在一个INTRANET(模拟INTERNET)的环境中,从而实现了设计。
【关键词】留言板 网络数据库 ASP HTML
4.1 用户、管理员浏览模块
(图4.1)
此模块的功能是用户和管理员都能利用该模块浏览所有的留言内容,此模块不用注册即可使用,每页由7条记录组成,具有翻页功能,具体的设计步骤如下(此模块的图片如图3.1)。
下面的ASP代码实现显示表stu中的内容:
<%response.buffer=true%>
<html>
<head>
<title>留言板</title>
</head>
<%'========================显示数据库表stu中的信息=======================
sql="select * from lyb "
set rs=server.createobject("ADODB.Recordset")
rs.Open sql,conn,1
numzhuce=rs.RecordCount
page=request.querystring("page") '接收上一页、下一页的页号
if len(page)>0 and isnumeric(page) then
page=int(page)
else
page=1
end if
if not rs.eof then
size=7
rs.PageSize=size '每页记录数
TotlePage=rs.PageCount '总页数
TotlePage=int(numzhuce/size)
if (numzhuce mod size)>0 then TotlePage=TotlePage+1 '总页数
if page<1 or page>TotlePage then
page=1
rs.AbsolutePage=page '当前页
else
rs.AbsolutePage=page '当前页
end if
num=1 '循环变量初值
%>
以上的内容分别把接收到的数据放在变量中,下面的代码的功能是显示出这些信息。
<td width="545" height="91" valign="top">
<font size="2">
<%while not rs.eof and num<=size%>
<font color="#FF00FF">
[留言主题]</font><%=rs("主题")%><br>
<font color="#FF00FF">
[留言内容]</font><%=rs("内容")%><br>
                                     
<%=rs("昵称")%> 
[<%=rs("时间")%>] <br>
<font color="#0000FF">
+---------------------------------------------------------------------+</font> <br>
<%rs.movenext
num=num+1
wend
rs.close
set rs=nothing%>
</font>
</td>
</tr>
<tr>
<td width="545" height="91" valign="top">
<font size="2">
<a href="lyb.asp?page=1">[第一页]</a>
<% select case page
case 1: '只有下一页
if totlepage>1 then
%>
<a href="lyb.asp?page=2">[下一页]</a>[第<%=page%>页/共<%=TotlePage%>页][共<%=numzhuce%>条记录]
<% else %>
第<%=page%>页/共<%=TotlePage%>页</font>
<% end if %>
<% case TotlePage: '只有上一页%>
<a href="lyb.asp?page=<%=page-1%>">[上一页]</a>[第<%=page%>页/共<%=TotlePage%>页][共<%=numzhuce%>条记录]
<% case else: %>
<a href="lyb.asp?page=<%=page-1%>">[上一页]</a>
<a href="lyb.asp?page=<%=page+1%>">[下一页]</a>
[第<%=page%>页/共<%=TotlePage%>页][共<%=numzhuce%>条记录]
<% end select %>
</font>
<%end if%>
</td>
此模块用到了RecordCount、request.querystring等方法以及一些翻页的技巧。由于篇幅限制,这里只给出了一部分比较重要的代码,其它的简略。
4.2 用户留言及修改模块
该模块的功能是,用户可以在这里把自己的留言写在这里,如果其它用户浏览里,就可以看到此用户的留言(模块的缩略图如下3.2)。
(图4.2)
该模块由留言昵称、留言QQ、电子信箱、个人网站、留言主题和留言内容组成,其中后面有带星号的为必填项,其它的为选填项,写完之后单击写好了,即可提交,按返回上页,直接返回到首页。此页中用到了表单提交的一些技术,相关代码如下:
<script language="javascript">
function presub1(f) {
if(f.t1.value=="")
{
alert("昵称不能为空");
return false;}
else if(f.t5.value=="")
{
alert("主题不能为空");
return false;}
else if(f.s1.value=="")
{
alert("请输入正文内容");
return false;}
else
return true;
}
</script>
以上这段程序的功能是利用JAVA脚本进行本地验证,当用户的表单里填入空值或者不正确值的时候给出相应的提示。无需通过服务器。
<form method="post" οnsubmit="return presub1(this)" action="xly1.asp">
这句代码的功能是将整个表单以post方式发送到xly1.asp文件里。
4.3 用户注册模块
此模块的功能是用户可以在这里注册成为会员,有一些比普通用户更有一些权限。下图是注册的缩略图。
(图4.3)
该模块的具体设计和代码如下:
<script language="javascript">
function presub1(f) {
if(f.yhm.value=="")
{
alert("用户名不能为空");
return false;}
else if(f.kl.value=="")
{
alert("密码不能为空");
return false;}
else if(f.kl.value!=f.qrkl.value)
{
alert("两次输入密码不一致");
return false;}
else if(f.zjhm.value=="")
{
alert("请输入证件号码");
return false;}
else
return true;
}
</script>
以上程序是本地验证,要求输入的内容不能为空或者内容不合法。
<%
set rs=server.createobject("adodb.recordset")
rs.open "select * from news","dsn=ql;"
yhm=request("yhm")
kl=request("kl")
qrkl=request("qrkl")
zjhm=request("zjhm")
lxfs=request("lxfs")
dh=request("dh")
dw=request("dw")
%>
<html>
<head>
<title>注册信息</title>
</head>
<body>
<table border="1" width="100%" height="334">
<tr>
<td width="14%" height="61"></td>
<td width="86%" height="61">您注册的信息:</td>
</tr>
<tr>
<td width="14%" height="261"></td>
<td width="86%" height="261" valign="top"><%=request("yhm")%><p>
<%=request("kl")%><p>
<%=request("qrkl")%><p>
<%=request("zjhm")%><p>
<%=request("lxfs")%><p>
<%=request("dh")%><p>
<%=request("dw")%><p>
</td>
</tr>
</table>
</body>
</html>
以上程序把注册信息发送到服务器的数据库,并在屏幕上显示出来。
4.4 管理员登陆模块
(图4.4)
该模块的功能是管理员可以在这里登陆,可以在线的管理这些留言,管理员有特殊的权限,做普通用户不可以做的事情,比如,可以将留言删。(该模块的缩略图如3.3)具体的实现和代码如下:
<%response.buffer=true%>
<%response.expires=0%>
这两名话的作用是打开内存中的缓冲区。
<script language="javascript">
function presub(f) {
if(f.usname.value=="")
{
alert("请输入用户名");
return false;}
else if(f.uspas.value=="")
{
alert("请输入密码");
return false;}
else
return true;
}
</script>
以上这段程序的功能是利用JAVA脚本进行本地验证,当管理员输入的用户名和密码为空值或者不正确值的时候给出相应的提示
4.5 管理员回复与删除留言模块
此模块的功能是管理员可以进入,并且可以进行增加和删除等功能,(此模块的缩略图如3.4)具体的实现方和代码如下:
(图4.5)
当用户点删除时,弹出提示,询问是否删除,如果确定点是,否则点取消。
<%response.buffer=true%>
<%
set rs=server.createobject("adodb.recordset")
rs.open "select * from lyb","dsn=stu;"
%>
<%set cn=server.createobject("adodb.connection")
cn.open"dsn=stu;"
%>
定义缓冲区和连接数据源。
<!--#include file="conn.asp"-->
<%
username=request.querystring("username")
if trim(username)<>"" then
sql="delete from lyb where 昵称='"& username & "'"
cn.execute sql
end if
%>
<%'***************************************显示数据库表stu中的信息***************************************
sql="select * from lyb "
set rs=server.createobject("ADODB.Recordset")
rs.Open sql,conn,1
numzhuce=rs.RecordCount
page=request.querystring("page") '接收上一页、下一页的页号
if len(page)>0 and isnumeric(page) then
page=int(page)
else
page=1
end if
if not rs.eof then
size=7
rs.PageSize=size '每页记录数
TotlePage=rs.PageCount '总页数
TotlePage=int(numzhuce/size)
if (numzhuce mod size)>0 then TotlePage=TotlePage+1 '总页数
if page<1 or page>TotlePage then
page=1
rs.AbsolutePage=page '当前页
else
rs.AbsolutePage=page '当前页
end if
num=1 '循环变量初值
%>
把总页数和每页的内容分别赋给变量。
<% ' ****************************删除确认******************************************%>
<script language=javascript>
function chkdel() {
var talk = window.confirm("请确定是否删除该条记录!");
if (talk==false) {return false;}
}
</script>
确认是否删除该记录。
<td width="1293" height="182" valign="top">
<font size="2">
<%while not rs.eof and num<=size%>
<font color="#FF00FF">
[留言主题]</font><%=rs("主题")%>
<br>
<font color="#FF00FF">
[留言内容]</font><%=rs("内容")%><br>
                                     
<%=rs("昵称")%>  [<%=rs("时间")%>]<font color="#0000FF"> <br>
<font color="#0000FF">
+---------------------------------------------------------------------+
<a href="lybxg.asp?username=<%=rs("昵称")%>" οnclick="return chkdel();" >删除?</a>
</font> <br>
<%rs.movenext
num=num+1
wend
rs.close
set rs=nothing%>
</font></font>
<font size="2">
<a href="lybxg.asp?page=1">[第一页]</a>
<% select case page
case 1: '只有下一页
if totlepage>1 then
%>
<a href="lybxg.asp?page=2">[下一页]</a>[第<%=page%>页/共<%=TotlePage%>页][共<%=numzhuce%>条记录]
<% else %>
第<%=page%>页/共<%=TotlePage%>页</font>
<% end if %>
<% case TotlePage: '只有上一页
%>
<a href="lybxg.asp?page=<%=page-1%>">[上一页]</a>[第<%=page%>页/共<%=TotlePage%>页][共<%=numzhuce%>条记录]
<% case else: %>
<a href="lybxg.asp?page=<%=page-1%>">[上一页]</a>
<a href="lybxg.asp?page=<%=page+1%>">[下一页]</a>
[第<%=page%>页/共<%=TotlePage%>页][共<%=numzhuce%>条记录]
<% end select %>
<%end if%>
</td>
4.6 其他程序模块
以上几节简单的介绍了几个模块的一些比较重点的程序段,但是在本节中介绍一下几个在表面上看不到的,但是却起着相当重要的一些代码。
<%sj=date()
aaa="'"&request("T1")&"','"&request("T2")&"','"&request("T3")&"','"&request("T4")&"','"&request("T5")&"','"&request("s1")&"','"&sj&"'"%>
<%set cn=server.createobject("adodb.connection")
cn.open"dsn=stu;"
%>
<%strsql="insert into lyb(昵称,qq,邮箱,网站,主题,内容,时间) values("&aaa&")"
cn.execute(strsql)
%>
<%cn.close
set cn=nothing%>
<%response.redirect"lyb.asp"%>
以上这段代码是在后台运行的,该网页是个空的,什么也不显示,当用户写完留言的时候,把表单里所有的东西都要提交到这里,利用ASP提供的insert int 等语句把他传送到服务器的数据库的表格里。
<%response.buffer=true%>
<%usname=request("usname")
uspas=request("uspas")
set rs=server.createobject("adodb.recordset")
rs.open "select * from password","dsn=stu;"
%>
<html>
<head>
<body>
<%while not rs.eof
if usname=rs("用户名") and uspas=rs("密码") then
%>
<%response.redirect "lybxg.asp"%>
<%response.end%>
<%end if
rs.movenext
wend
rs.close
set rs=nothing%>
<%response.redirect"lybgly.asp"%>
</body>
</html>
该程序段的功能是,接收用户名和密码,并把用户名和密码发送到服务器的数据库里验证,如果和数据库里的一样,则可以登陆,否则提示用户名或密码错误。
<%
constr="DBQ="+server.mappath("stu.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=Server.CreateObject("ADODB.connection")
conn.open constr
%>
连接数据源文件。