背景: #EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  
阅读新闻

学用asp+access制作留言簿

[日期:2005-01-05] 来源:  作者: [字体: ]
前言:这是一篇asp+access的留言簿教程,运行测试环境:win2000+IE5.0。此篇教程适合对asp有一定了解的人,如果是初学者,建议先看点asp方面的书籍,或者本站XML+ASP的一些文章和论坛的一些贴子,至少能对变量、语法、函数、对象等有一个大概的了解。本教程最后完成时会提供下载,有什么问题欢迎大家到社区一同讨论。

好了,我们开始吧。

一、总体思路


  留言簿虽小,但对asp知识的要求还是挺全面的。首先我们要对留言簿要完成的功能做一个大体的介绍。在这里我建议读者在设计一个项目时,最好能够构思出大体轮廓并写出来,这样就不会越做越乱,到最后自己都不知道自己要做什么!
  1、单用户版:这篇教程中所要完成的留言簿只有一个管理员,所有人不需要注册就可留言。
  2、留言者必须填写用户名、QQ号、邮箱、主页、留言内容、留言时间、可以使用悄悄话功能、可以获取用户IP地址,其中留言内容可以使用简单的UBB功能。
  3、可以实现一定的管理功能:删除留言、编辑留言、自定义页头和页低、定义留言数、写公告、对留言簿进行一些最简单的配置等。
  4、主要用asp+access2000一完成,当然会用的jsp(本教程对此内容不做具体解释)
  5、如果必要大家可以加搜索功能。
  6、在程序设计中,尽量使用模块化,减少大量无用代码。

二、数据库构造
  1、数据库名: data.mdb 
   说明:在设计留言簿的过程中,可以保持此名,设计完毕后可以改为data.asp,以保证数据库的安全性。
    2、数据库表:总共有三个表:
   (1)admin  主要记录管理员的用户名和密码以及一些基础信息。
   (2)content 用来记录用户留言内容
   (3)gbfined 用来记录留言簿的一些基本配置,如题头图片地址、图片长度高度、留言簿每页的留言条数,公告内容等等。
  3、数据库表的具体设计:
   (1)admin表
字段名           类型        长度     说明
admin_name           文本         默认     存储管理员的名字
admin_password     文本     默认   存储管理员的密码
admin_qq         文本     默认   存储管理员的oicq号
admin_email     文本         100   存储管理员的邮箱
admin_homepage    文本         150   存储管理员的主页地址
admin_webname     文本         150   存储管理员的主页名称

说明:A、“常归”项中的“允许空字符串”最好填“是”
B、表格设计完后最好能够填入数据:
admin_name:admin
admin_password: admin
admin_qq: 5714653      
admin_email: daifo@5dmeng.com   
admin_homepage: http://www.5dmeng.com
admin_webname: 织梦帝国

(2)content表
字段名           类型        长度     说明
user_id             自动编号   默认   用户留言的ID号
user_name           文本         默认     存储留言者的名字
user_qq        文本     默认   存储留言者的oicq号
user_ip         文本     默认   存储留言者的IP地址
user_email     文本         默认   存储留言者的邮箱
user_address     文本         默认   存储留言者的来源地址
user_homepage    文本         150   存储留言者的主页地址
user_webname        文本         150   存储留言者的主页地址
user_image          文本         默认   存储留言者的头像地址
user_silent         是/否        否    是否只有管理员才能看贴
user_time           日期/时间  常规日期  存储留言者的留言时间
user_content    备注    默认    存储留言者的留言内容
reply_content    备注    默认    存储管理员的回复时间
reply_time     日期/时间  常规日期  存储管理员的回复时间

说明:“常归”项中的“允许空字符串”最好填“是”

(3)gbfined表
字段名           类型        长度     说明
gb_name       文本     默认     留言簿的名称
gb_pagecount    数字     整型  留言簿每页留言条数
gb_address          文本     150   留言簿地址,或者主页地址
gb_image      文本     默认  留言簿顶部图片地址及名称
gb_width      数字          整型  图片的宽度
gb_height      数字          整型  图片的高度
gb_editioner    文本      250   页面低部内容
gb_bulletin     备注     默认  管理员公告内容
gb_time       日期/时间  常规日期  管理员公告时间

说明:A、“常归”项中的“允许空字符串”最好填“是”
B、表格设计完之后最好能填上内容,特别是gb_pagecount和gb_name
gb_name: 织梦帝国     
gb_pagecount: 10
gb_address :#  (如果你有个人主页,可以填上主页地址)     
gb_image: images/title.gif  
gb_width: 400     
gb_height: 100   
gb_editioner: Designer:Daifo   E-mail:Daifo@sina.com

上一节,我们讲到数据库的构建,现补充几点:
1、字段大小,这个与你存储对像大小紧密联系,应该保证可大不可小的原则。
2、字段类型,这并不因为你存储对像是数字就一定要设成数字,可以设成文本类型,这一点我在做数据库完全体现了。


好了,我们开始第二篇。

三、文件构成
  留言簿中的留言、删除留言、编辑留言、管理功能等等,其实都可以在一个页面中完成,但设计代码的时候,不可以全放在一个页面中。如何来组织自己的代码放在不同的页面中,然后再调用,这是一个痛苦的过程,特别对一个大网站的制作。我们从文件构成中来看看留言簿的代码大体分配情况:
   index.asp  这是留言簿的首页也是主页面,在这个页面里调用其他文件和函数,在这个文件里利用很少的代码来充分体现asp的模块化思维
   inc.asp  这个文件其实是真正的核心文件,我做完留言簿的时候,发现有一千多行,当然里面还是可以精简的,主要是大量的asp模块内容在里面,然后让index.asp文件来调用。
   conn.asp  这是调用数据库和打开数据库的文件,内容很少,但把他分流出来单独做成一个文件,主要是方便数据库文件名和打开方式的修改
   const.asp  最初学做asp程序的时候,很不喜欢定义变量,时间长了之后,再也不看不下去,不得不把程序送入垃圾桶。通过这个文件,我想告诉大家,一定要定义变量,一定要给程序写注释。
   faces.htm  这是头像文件
   styls.css  css文件
   ubbhelp.htm  帮助用户留言的ubb代码帮助文件
说明:1、大家先准备好头像文件和css文件,然后我们就开始代码设计了,没有的朋友可以下载我现在用的:
 http://daifo.dns0755.net/guestbook/styls.css
  http://daifo.dns0755.net/guestbook/faces.htm
  2、本教程的最后效果大家也可以点此网址看一看,也欢迎大家留言。
  http://daifo.dns0755.net/guestbook/index.asp
  3、教程写完后,我会提供下载源代码的网址。

四、页面代码设计
  关于与数据表的连接说明:Recordset对象存取数据表的连接比较烦琐,本教程用得很少,这次使用的基本上是sql语句,如果有其他方法会在代码中加以说明。

(一)conn.asp文件
'将 VBScript 设为该页的主脚本语言
<%@LANGUAGE="VBSCRIPT"%>
<%
'此语句要求设计者要定义变量,这样的话可以减轻服务器的解析负担,进而提高运行速度速度
option explicit
'定义数据库变量
dim conn,connstring,dbpath
'设置数据库对象
set conn=server.createobject("adodb.connection")
'数据库路径
dbpath=server.mappath("data/data.mdb")'
'连接数据库
connstring="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath
'如果你用的是较老版本Access驱动,请用下面连接方法
'connstr="driver={Microsoft Access Driver (*.mdb)};dbq=" & dbpath
conn.open connstring
%>
(二)const.asp文件

<%
'定义数字变量和数据库变量,有此不常用变量将在程序中定义
dim i
dim strsql,rs
'定义表中将要调出的数据的变量,在这里我用了和数据库中同名字段
dim admin_name,admin_password,admin_qq,admin_email
dim admin_homepage,admin_webname
dim user_id,user_name,user_image,user_address,user_ip,user_qq,user_homepage,user_webname
dim user_email,user_silent,user_time,user_content,reply_y_n,reply_content,reply_time
dim gb_name,gb_address,gb_pagecount,gb_image,gb_width,gb_height
dim gb_editioner,gb_time,gb_bulletin
dim action,page,id
dim islogin,username,password
'打开数据表,取出留言簿配置的相关参数
strsql = "select * from gbfined"
set rs = conn.Execute (strsql)

gb_name = rs("gb_name")
gb_address = rs("gb_address")
gb_pagecount= rs("gb_pagecount")
gb_image= rs("gb_image")
gb_width= rs("gb_width")
gb_height= rs("gb_height")
gb_editioner= rs("gb_editioner")
gb_bulletin= rs("gb_bulletin")
gb_time= rs("gb_time")
'关闭数据表
rs.close
set rs=nothing

'如果管理员登录,取出管理员的库中信息,如果未登录将信息置空,主要是方便管理员留言
if session("adminpress")<>"" then
     strsql = "select * from admin"
     set rs = conn.Execute (strsql)
  admin_name=rs("admin_name")
  admin_password=rs("admin_password")
  admin_qq=rs("admin_qq")
  admin_email=rs("admin_email")
     admin_homepage=rs("admin_homepage")
     admin_webname=rs("admin_webname")
  rs.close
     set rs=nothing
  else
     admin_name=""
  admin_password=""
  admin_qq=""
  admin_email=""
     admin_homepage=""
     admin_webname=""
  end if
%>
(三)index.asp文件

  今天主要讲一下此文件的大体结构并通过一个小例子来演示一下。
1、文件结构
  |--调用相关文件
   |--调用写库的相关函数
  |--调用页面顶部显示函数
   |--调用取库的函数
  |调用页面低部显示函数

 (1)在首页中用<!--#INCLUDE FILE = "inc.asp" -->语句来调用函数库文件,而在inc.asp中用<!--#INCLUDE FILE = "const.asp" -->语句调用定义变量文件,在const.asp文件中用<!--#INCLUDE FILE = "conn.asp" -->语句调用连接数据库文件,这样开成了一个嵌套调用,对保护数据库文件有很大的帮助,同时这样确定好了之后可以避免重复调用。注意上面语句不可以放在<%%>中。
  (2)在在调用写库函数中用select case语句,如:
  select case action
    case "chklogin"
        call chklogin     
    case "delete"
          call delete
    end select
 (3)调用页面顶部函数直接用call top()就OK了,基中函数调用可以去掉 call,直接写成top()

2、实例
 现在我们已经建立好了,数据库、const.asp和conn.asp文件。大家可以在inc.asp文件中加入页顶和页低函数:
<!--#INCLUDE FILE = "const.asp" -->
<%'======页面头和导航条
sub top(gb_name)%>
<html>
<head>
<title><%=gb_name%>留言簿</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="Content-Language" content="zh_cn">
<meta name="Generator" content="EditPlus">
<meta name="Author" content="daifo,呆佛">
<meta name="authorSite" content="www.5dmeng.com">
<meta name="Keywords" content="<%=gb_name%>,asp教程,织梦帝国,织梦帝国留言簿,呆佛,daifo,code,download,articles,guestbook,源代码">
<link rel="stylesheet" href="styls.css">
</head>
<body leftmargin="0" topmargin="2">
<table align=center border="0" width=98% bgcolor="#FFFFFF">
<tr><td align="center"><img src="<%=gb_image%>" width="<%=gb_width%>" height="<%=gb_height%>"></td></tr>
<tr><td>
<table align=center border="0" width="75%" cellspacing="0" cellpadding="0">
   <tr>
   <td align=left width="80%">
        <font color=#999933>◎</font>
  <a href="<%=gb_address%>" title="返回主页">主页</a>
  <font color=#663300>◎</font>
  <a href="index.asp" title="点击查看留言">查看留言</a>
  <font color=red>◎</font>
  <a href="index.asp?action=input" title="点击留言点东西">签写留言</a>
  <font color=#339900>◎</font>
  <%if session("adminpress")="" then%>
     <a href="index.asp?action=manage" title="管理员必须先登录">留言管理</a>
  <%else%>
           <a href="index.asp?action=m_person" title="修改管理员个人资料">改资料</a>
           <font color=#6633FF>◎</font>
           <a href="index.asp?action=m_write" title="修改留言簿一些参数">改配置</a>    
     <font color=#006666>◎</font>
           <a href="index.asp?action=logout" title="退出登录">退出</a>
  <%end if%>
  <font color=#999933>◎</font>    
   </td></tr>
</table>
<%end sub
'======页面低
sub bottom(gb_editioner)%>
<br>
<table border="0" cellspacing="1" cellpadding="1" width=98%>
<tr><td align="center" height=16>
<hr size="1" color="silver" width="30%">
<%=gb_editioner%></td></tr>
<tr><td align="center" height=16>Copyright &copy; 2003 - 2005 <a href=http://www.xintiao.net target=_blank name=down>xintiao.net</a>  All Rights Reserved</td></tr>

</table></td></tr></table>
<%end sub%>

然后在index.asp中加入下面代码:
<!--#INCLUDE FILE = "inc.asp" -->
<center>
<%call top(gb_name)%>
<br><br><br><br>
<%call bottom(gb_editioner)%>
</center>

把所有文件保存到guestbook文件夹中,然后在浏览器是软件入http://localhost/guestbook/index.asp,怎么样,是不是很棒?

好了,今天就到这里吧,我要去语聊了,,,哈哈,,,,

第二篇发表的第一天,数据库文件名有误,不知道大家发现没有,正确的应该是这样的:dbpath=server.mappath("data/data.mdb"),当时复制了我改动过的数据库名,扩展名是asp。嘿嘿,数据库文件的扩展名还能改?答案是肯定的。为了数据库的安全性,建议你在设计完一个项目后,改动的你数据库文件名为:****.asp。
 
 在第三讲之前,现摘录一网友对数据库(表)的几段语句,在本教程中并未用到这些语句,但我相信这些对是很有帮助的,大家可以和我对数据库的操作比较一下:

'*******************************************************************
'打开数据库
sub opendb(connect)
set connect=server.CreateObject("ADODB.connection")
connect.ConnectionString="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath(databasename)
connect.Open strconn
end sub

'*******************************************************************
'关闭数据库
sub closedb(connect)
connect.close
set connect=nothing
end sub

'*******************************************************************
'打开单个表读
sub opentable(connect,tbname,myrs)
set myrs=server.createobject("ADODB.recordset")
rssql="select * from " & tbname
myrs.open rssql,connect,1,1
end sub

'*******************************************************************
'关闭临时表
sub closetable(rs)
rs.close
set rs=nothing
end sub

'*******************************************************************
'查询数据库
sub searchtable(connect,sql,rs)
set rs=server.createobject("ADODB.recordset")
rs.open sql,connect,1,1
end sub

'*******************************************************************
'查询并更改数据库
sub changetable(connect,sql,rs)
set rs=server.createobject("ADODB.recordset")
rs.open sql,connect,1,3
end sub

********************************************************************

好了,我们接着来。
3、下面给出,我的 index.asp的内容,然后按这些来设计留言簿!

<!--#INCLUDE FILE = "inc.asp" -->
<%'调用函数库inc.asp文件
'函数库中的form参数action值
action=request("action")
select case action
'检查登录
  case "chklogin"
      chklogin   
'删除留言,由于,代码不是很多,所以不例为函数,大家可以试着将其做成函数
  case "delete"
      if session("adminpress")<>"" then  
'如果管理员登录了,那么删除留言    我用的是spl语句,很简单的语句!
  strsql="delete * from content where user_id="&request.querystring("id")
       conn.execute(strsql) 
'关闭数据库 
  conn.close 
       set conn=nothing 
'删除成功,回留言簿
  response.write"<br><br><br><br><center><font size=3 color=navy>"
     response.write"删除成功,,正回留言簿.......</font></center>"
%>
         <script language=&#106avascript>
            setTimeout("location.replace('index.asp')",600)
         </script>
<%'结束代码的执行,回首页面
        response.end
       else
'如果未登录,进入登录界面
          response.redirect"index.asp?action=login"
       end if
   case "w_r_add"
      if session("adminpress")<>"" then
     w_r_add  '留言簿配置修改入库
      else
    response.redirect"index.asp?action=login"
      end if

   case "w_p_add"
      if session("adminpress")<>"" then
     w_p_add  '版主信息修改入库
      else
    response.redirect"index.asp?action=login"
      end if

   case "inputadd"
   recadd   '留言内容入库
 
   case "editadd"
    if session("adminpress")<>"" then
        editadd  '编辑或回复留言入库
    else
      response.redirect"index.asp?action=login"
       end if

   case "logout" '管理员退出登录
      session("adminpress")=""
   response.redirect"index.asp"
end select
%>

<center>
<%
call top(gb_name) '调用页面头部内容

select case action
   case ""
      listrec '显示留言信息

   case "serguest"
      serrec  '搜索留言 

   case "login"
      login  '登录界面

   case "input"
      input  '输入留言界面

   case "chklogin"
      chklogin  '检查登录,此函数可以放在顶部,但为了显示错误信息的工整性,我放到了此处

   case "editrec"     
   editrec  '修改信息界面

   case "manage" '验证管理者是否
    if session("adminpress")="" then
       login
    else
       listrec
    end if

  case "m_write" '修改配置界面
     if session("adminpress")<>"" then
        m_write
  else
     login
     end if

  case "m_person" '修改版主信息界面
     if session("adminpress")<>"" then
        m_person
   else
     login
     end if
end select
call bottom(gb_editioner) '调用页低信息

%>
</center>

最后我们一起来看看inc.asp文件内容,此文件中全部是index.asp文件调用的函数。

首先在文件头加上:<!--#INCLUDE FILE = "const.asp" -->来调用定义的变量。

1、首先我们写出引号和空格的转换函数,主要是为了解决数据与sql函数相冲突。

<%
Function ChkString(string)
if string = "" then string = " "
ChkString = server.htmlencode(Replace(string, "'", "''"))
End Function

Function ChkUserString(string)
string = ChkString(string)
ChkUserString = server.htmlencode(Replace(string, " ", ""))
End Function
%>

2、关于页面头和页面低部函数,在第二讲中已经写出,这里不再重写。

3、登录界面
<%sub login%>
<br><br><br>
<FORM METHOD=POST ACTION="index.asp?action=chklogin" onsubmit="return check(this)" >
<table align=center width=35% border="0" cellspacing="0" cellpadding="0" class="table1">
  <tr height=25 align=center>
  <td align=center bgcolor=#c0c0ff colspan="2">管理员登录</td></tr>
   <tr height=30>
    <td width="30%">
      <p align="center">姓名:</td>
    <td width="70%" align="center">
     <INPUT TYPE="text" NAME="username" class=smallinput onmouseover=this.focus() onfocus=this.select() maxlength="8">
 </td>  
  </tr>
  <tr height=30>
    <td width="30%"><p align="center">密码:</td>
    <td width="70%" align="center">
     <INPUT TYPE="password" name="password" class=smallinput onmouseover=this.focus() onfocus=this.select() maxlength="10">
 </td>
   </tr>
  <tr height=25><td align=center colspan=2>
  <input type="submit" value=" 提交 " class=buttonface name="B1">
    <input type="reset" value=" 取消 " class=buttonface name="B2">
   </td></tr>
</table>
<!--检查管理员用户名和密码是否为空-->
<script language="javascript">
function check(theForm)
{
  if (theForm.username.value == "")
  {
    alert("请输入用户名!");
    theForm.username.focus();
    return (false);
  }
 
   if (theForm.password.value == "")
  {
    alert("请输入密码!");
    theForm.password.focus();
    return (false);
  }
 }
</script>
</FORM>
<%end sub%>

4、验证管理员密码是否正确
<%end sub
'验证登录密码
sub chklogin()
        admin_name=chkstring(request("username"))
'取得表单数据
 admin_password=chkstring(request("password"))
        strsql="select admin_name,admin_password from admin"  
 set rs = conn.Execute (strsql)  
'读取数据库中用户和密码
 if not(rs.bof and rs.eof) then
         if admin_name=rs("admin_name") and admin_password=rs("admin_password") then
   session("adminpress")=chkstring(request("username")) 
'如果管理员名字和密码输入正确存取session变量,以便管理员对留言簿的维护。
          rs.close
   set rs=nothing
   conn.close
   set conn=nothing
'关闭数据库和表
   response.redirect "index.asp"
'回到首页
   response.end
'结束后面代码的操作
        else 
'验证用户名和密码输入错误的处理     
     response.write  "<br><br><center><font color=red size=2><li>你输入的用户名和密码不符!</li></font>"
            response.write "<br><font size=2> <a href='javascript:history.go(-1)'>返回上一页</a></font></center>"
 rs.close
        set rs=nothing
      end if
      else
       response.write "登录出现错误或者数据库被破坏!"       
      end if       
end sub
%>

5、输入留言界面。思路:用户不用注册就可以留言,管理员留言时一些基本信息自动调用。
<%sub input%>
<form method="POST" action="index.asp?action=inputadd" onsubmit="return check(this)">
  <table width="80%" border="0" align="center" cellpadding="0" cellspacing="0" class=table1>
    <tr>
    <td width="10%" align=center>姓名:</td>
    <td width="18%" align=left>
        <input maxlength=10 name=username size=13 class=smallinput onmouseover=this.focus() onfocus=this.select() value="<%=admin_name%>">
</td>
    <td width="44%" align=center class=td1>留言内容[<a href="ubbhelp.htm" target=_blank>UBB代码</a>]</td>
<!--此处没有使用for语句来循环,是因为可以提高运行速度,且中间省去了一些大家可以自己补充-->
    <td width="28%" align=center class=td1>头像:
<select name=images size=1 onChange="document.images['face'].src=options[selectedIndex].value;">
<option value="faces/1.gif">1</option>
<option value="faces/2.gif">2</option>
<option value="faces/3.gif">3</option>
..........
<option value="faces/37.gif">37</option>
<option value="faces/38.gif">38</option>
<option value="faces/39.gif">39</option>
<option value="faces/40.gif">40</option>
</select>
[<a href="faces.htm" target=_blank>查看头像</a>]</td>
  </tr>
  <tr>
    <td width="10%" align=center>Email:</td>
    <td width="18%" align=left>
      <input maxlength=30 name=email size=13 class=smallinput onmouseover=this.focus() onfocus=this.select() value="<%=admin_email%>"></td>
    <td width="44%" rowspan="6" align=center class=td1>
        <textarea cols=37 name=content rows=10 class=smallarea onmouseover=this.focus() onfocus=this.select()></textarea>
         </td>
    <td width="28%" rowspan="5" align=center class=td1><img id=face src=faces/1.gif alt="头像"></td>
 
  </tr>
  <tr>
    <td width="10%" align=center>oicq:</td>
    <td width="18%" align=left>
       <input maxlength=10 name=oicq size=13 class=smallinput onmouseover=this.focus() onfocus=this.select() value="<%=admin_qq%>"></td>
  </tr>
<tr>
    <td width="10%" align=center>来自:</td>
    <td width="18%" align=left>
 <select name=address>
                  <option value=北京>北京
                  <option value=广东>广东
                  <option value=上海>上海
                  <option value=新疆>新疆
                  <option value=辽宁>辽宁
                  <option value=广西>广西
                  <option value=海南>海南
                  <option value=湖南>湖南
                  <option value=甘肃>甘肃
                  <option value=河北>河北
                  <option value=湖北>湖北
                  <option value=江西>江西
                  <option value=江苏>江苏
                  <option value=西藏>西藏
                  <option value=山东>山东
                  <option value=浙江>浙江
                  <option value=安徽 selected>安徽
                  <option value=福建>福建
                  <option value=吉林>吉林
                  <option value=黑龙江>黑龙江
                  <option value=山西>山西
                  <option value=云南>云南
                  <option value=贵州>贵州
                  <option value=四川>四川
                  <option value=陕西>陕西
                  <option value=重庆>重庆
                  <option value=天津>天津
                  <option value=河南>河南
                  <option value=青海>青海
                  <option value=宁夏>宁夏
                  <option value=台湾>台湾
                  <option value=香港>香港
                  <option value=澳门>澳门
                  <option value=其它地区>其它地区
                </select>
       </td>
  </tr>
  <tr>
    <td width="10%" align=center>Web名称:</td>
    <td width="18%" align=left>
     <input maxlength=50 name=webname size=13 class=smallinput onmouseover=this.focus() onfocus=this.select() value="<%=admin_webname%>"></td>
  </tr>
  <tr>
    <td width="10%" align=center>Web地址:</td>
    <td width="18%" align=left>
     <input maxlength=30 name=homepage size=13 class=smallinput onmouseover=this.focus() onfocus=this.select() value="<%=admin_homepage%>"></td>
  </tr>
 <tr>
    <td width="10%" align=center>悄悄话:</td>
    <td width="18%" align=left>
       <input type="radio" value="yes"  name="silent">是 
       <input type="radio" value="no"  name="silent" checked>否
 </td>
   
<script language="javascript">
function check(theForm)
{
  if (theForm.username.value == "")
  {
    alert("请输入用户名!");
    theForm.username.focus();
    return (false);
  }
  
   if (theForm.content.value == "")
  {
    alert("请输入内容!");
    theForm.content.focus();
    return (false);
  } 
}
</script>
<td width="28%" align=center class=td1>
 <input type="submit" value="发送" name="save" class=buttonface>&nbsp;
      <input type="reset" value="重写"  name="reset" class=buttonface></td>
  </tr>
</table>
</form>
end sub%>

6、留言内容入库
sub recadd
'读取表单数据
        user_name=request("username")
   user_email=request("email")
   user_qq=request("oicq")
   user_address=request("address")
   user_homepage=request("homepage")
   user_webname=request("webname")
   user_image=request("images")
   user_ip=request.servervariables("remote_addr")
   user_content=chkuserstring(request("content"))
        user_silent=request("silent")
   user_time=now()
'将读取数据写入库
   strSql = "insert into content (user_name, user_qq,user_email,user_address,user_homepage,user_webname,user_image,user_ip,user_content,user_silent,user_time) Values ('"
         strSql = StrSQl & user_name & "', '"
         strSql = StrSQl & user_qq & "', '"
         strSql = StrSQl & user_email & "', '"
   strSql = StrSQl & user_address & "', '"
   strSql = StrSQl & user_homepage & "', '"
   strSql = StrSQl & user_webname & "', '"
   strSql = StrSQl & user_image & "', '"
   strSql = StrSQl & user_ip & "', '"
   strSql = StrSQl & user_content & "', "
         strSql = StrSQl & user_silent & ", '"
         strsql = strsql & now() &"')"  
     conn.Execute (StrSql)
'关闭数据库
   conn.close
   set conn=nothing
'返回留言簿首页
  response.write"<br><br><br><br><center><font size=3 color=navy>"
     response.write"留言成功,,正回留言簿.......</font></center>"
%>
 <script language=javascript>
  setTimeout("location.replace('index.asp')",600)
 </script>
<%
    response.end
end sub
%>

阅读:
录入:admin

推荐 】 【 打印
上一篇:ASP数据库简单操作教程
下一篇:ASP与数据库应用(给初学者)
相关新闻      
本文评论       全部评论
发表评论


点评: 字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款