上次发在TOM里,还没写完,元旦以后再续。
=======================================================
[知识点]数据库记录添加
[预备工作]假定数据库为Access,数据库、表名均为guestbook,基本字段(其它信息可自由收集):ID(留言唯一识别身份,自动编号,有序无重复)、fromname(留言用户名,字符,长度10左右)、words(留言内容,如果无限制长度可选用备注型,否则可定为字符型)、rewords(回复内容,设置与words字段相同)、adddate(留言日期,日期型,默认值设为now())、redate(回复日期,设置同adddate,不设默认值),如有必要可以收集留言用户IP、省份、个人主页、贴图等信息,此处略去。
新建addwords.asp(添加留言页面)、savewords.asp(保存留言页面)、guestbook.asp(显示留言页面)、rewords.asp(回复留言页面)、saverewords.asp(保存回复留言页面)、(conn.asp)连接数据库
[操作步骤]
1、建立数据库连接(conn.asp),内容如下(暂不讨论其中知识点):
<%
dim conn,connstr
connstr="DBQ="+server.mappath("guestbook.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
%>
2、用户发表留言页面(addwords.asp):
主要是表单,页面可自己设计,表单应收集以下内容:
fromname(单行文本),words(多行文本)
提交页面为savewords.asp。
3、保存留言页面(savewords.asp):
主要涉及到连接数据库与保持数据到数据库两个知识点,程序如下:
<!--#include file="coon.asp"-->
<%
dim fromname,words,sql
fromname =replace(trim(request.Form("fromname")),"’","´")
words=replace(trim(request.Form("words")),"’","´")
’其中过滤掉单引号,否则保存时会出错
if fromname="" then
response.write "<script>alert(’请输入您的姓名!’);history.back();</script>"
response.end
end if
if words="" then
response.write "<script>alert(’请输入留言内容!’);history.back();</script>"
response.end
end if
’可以在addwords.asp页面里用javascript在提交前先判断,不过最好在这个页面里也加上判断是否有空值
sql="INSERT INTO guestbook(fromname,words) values (’"&fromname;&"’,’"&words;&"’)"
conn.Execute sql
conn.close
set conn=nothing
Response.Write("<script>alert(’留言成功!’);window.location=’guestbook.asp’;</scrip t>")
’添加成功后的提示,可省略直接转向至guestbook页
%>
4、留言显示页面(guestbook.asp):
这也是用户看到的最首要的页面,所以可以加强一些美工,在这里只讲程序部分,程序部分如下:
<!--#include file="conn.asp"-->
<%
dim sql,rs,CurPage
response.buffer=true
CurPage =CINT(Request("CurPage"))
If Request("CurPage") = "" or Request("CurPage") = 0 then CurPage =1
’分页
%>
<html>
<head>
</head>
<body>
<br>
<br>
<br>
<%
set rs=server.createobject("ADODB.Recordset")
sql="select * from guestbook order by adddate desc"
’按留言日期降序显示
rs.open sql,conn,1,1
if rs.eof then
Response.Write "暂无留言,<a href=addwords.asp>请添加新留言。</a>"
else
RS.PageSize=10
’每页显示多少条记录,可自己设置
Dim TotalPages
TotalPages = RS.PageCount
If CurPage>RS.Pagecount Then
CurPage=RS.Pagecount
end if
RS.AbsolutePage=CurPage
rs.CacheSize = RS.PageSize
Dim Totalcount
Totalcount =INT(RS.recordcount)
%>
<table width="100%" height="20" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="12%">○第<font color="#CC0000"><%=CurPage%></font>/<%=TotalPages%>页</td>
<td width="48%">共有<font color=#D20000><%=rs.recordcount%></font>篇留言</td>
<td align="right" width="40%"> <div align="right">[<a href=guestbook.asp?Curpage=<%=Curpage%>刷新</a>][<a href=wordslist.asp?Curpage=<%=Curpage-1%>>上一页</a>] [<a href=wordslist.asp?Curpage=<%=Curpage+1%>>下一页</a>] [<a href=wordslist.asp?Curpage=1>首页</a>] [<a href=wordslist.asp?Curpage=<%=TotalPages%>>尾页</a>]</div></td>
</tr>
</table>
<br>
<%I=0
p=RS.PageSize*(Curpage-1)
do while (Not RS.Eof) and (II<RS.PageSize)
p=p+1
%>
<table width="550" border="0" cellspacing="2" cellpadding="0" align="center">
<tr>
<td width="80">内容:</td>
<td><%=rs("words")%></td>
</tr>
<tr>
<td colspan="2">来自<%=rs("fromname")%>于<%=rs("adddate")%>的留言。</td>
</tr>
<tr>
<td width="80">站方回复:</td>
<td><%=rs("rewords")%></td>
</tr>
</table>
<br>
<%
rs.movenext
II=II+1
loop%>
<table width="100%" height="20" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="12%">○第<font color="#CC0000"><%=CurPage%></font>/<%=TotalPages%>页</td>
<td width="48%">共有<font color=#D20000><%=rs.recordcount%></font>篇留言</td>
<td align="right" width="40%"> <div align="right">[<a href=guestbook.asp?Curpage=<%=Curpage%>刷新</a>][<a href=wordslist.asp?Curpage=<%=Curpage-1%>>上一页</a>] [<a href=wordslist.asp?Curpage=<%=Curpage+1%>>下一页</a>] [<a href=wordslist.asp?Curpage=1>首页</a>] [<a href=wordslist.asp?Curpage=<%=TotalPages%>>尾页</a>]</div></td>
</tr>
</table>
<%
end if
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
<br>
</body>
</html>
[待续] |