ASP+ACCESS基于WEB网上留言板

news2025/1/12 19:46:57

摘要

本文概述了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>

    &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp                                 

    <%=rs("昵称")%>&nbsp                              

    [<%=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>

    &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp             

    <%=rs("昵称")%>&nbsp [<%=rs("时间")%>]<font color="#0000FF"> <br>

    <font color="#0000FF">

    +---------------------------------------------------------------------+&nbsp;

    <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

%> 

连接数据源文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1691591.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【话题】AIGC行业现在适合进入吗

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 引言AIGC的发展阶段市场需求时机是否合适优势挑战 文章推荐 引言 在撰写关于当前是否适合进入AIGC&#xff08;人工智能生成内容&#xff09;行业的文章之前&#xff0…

LeetCode HOT 100:3. 无重复字符的最长字串

1. 链接 . - 力扣&#xff08;LeetCode&#xff09; 2. 题目描述 3. 题解 方法一&#xff1a;滑动窗口 哈希表 根据题意&#xff1a; 1. 遍历所有可能的子串——利用滑动窗口表示子串&#xff1b; 2. 保证滑动窗口内不包含重复字符——需要哈希表map记录字符出现的下标。…

模型评价指标笔记:混淆矩阵+F1+PR曲线+mAP

评价指标 二分类评价指标 混淆矩阵 TP: 正确预测为了正样本&#xff0c;原来也是正样本 FN: 错误的预测为负样本&#xff0c;原来是正样本 (漏报&#xff0c;没有找到正确匹配的数目) FP: 错误的预测为正样本&#xff0c;原来是负样本 (误报&#xff0c;没有的匹配不正确) TN…

解决ModuleNotFoundError: No module named ‘dnnlib‘问题

复现论文采用了大佬的库&#xff0c;这时候运行报错&#xff1a; 尝试采用&#xff1a;pip install dnnlib解决&#xff0c;但下载源中并不包含该依赖。 解决方法&#xff1a; pip install https://github.com/podgorskiy/dnnlib/releases/download/0.0.1/dnnlib-0.0.1-py3-n…

带你看懂认沽期权交易是什么意思?

今天期权懂带你了解带你看懂认沽期权交易是什么意思&#xff1f;认沽期权是期权交易中的一种方向性策略&#xff0c;也被称为“看跌期权”。 认沽期权交易是什么意思&#xff1f; 认沽期权&#xff0c;亦称为看跌期权&#xff0c;是期权交易中的一种类型&#xff0c;它提供给买…

【NVM】持久内存的架构

1 内存数据持久化 1.1 数据持久化 持久内存系统包含如下关键组件&#xff1a;微处理器、连接微处理器内存总线上的持久内存模组&#xff08;Persistent MemoryModule&#xff0c;PMM&#xff09;及持久内存上的非易失性存储介质。 使用持久内存来实现数据的持久化&#xff0c…

基于 Java 的浏览器——JxBrowser使用分享

软件介绍 JxBrowser 是一个基于 Java 的浏览器&#xff0c;它使用 Chromium 引擎来提供高性能的网页渲染和丰富的功能。它支持多种 GUI 框架&#xff0c;如 Swing、JavaFX 和 SWT&#xff0c;使得在 Java 应用程序中嵌入浏览器组件变得简单。 JxBrowser 是一个适用于多种用途…

linux常用软件源码安装-2

jdk、tomcat、Apache、nginx、mysql、redis、maven、nexus安装文档&#xff1a;linux常用软件源码安装 9.sonarqube安装 前置条件&#xff1a;mysql5.6和jdk8 1.下载 官网 2.安装unzip并解压sonarqube&#xff0c;然后移动到/usr/local yum install -y unzip unzip sonarq…

excel poi的titleRows 和 headRows含义

titleRows 这个参数的意思是&#xff1a;excel标题占多少行&#xff0c;而不是第几行headRows 这个参数的意思是&#xff1a;excel表头占几行&#xff0c;而不是第几行&#xff08;多行的意思是合并的行数&#xff09; 比如有一个excel如下&#xff0c;1-2行是标题&#xff0c…

大语言模型实战——搭建纯本地迷你版RAG

1. 概念 RAG&#xff08;Retrieval Augmented Generation&#xff09;检索增强生成&#xff0c;它结合了搜索技术和大语言模型的提示词功能&#xff0c;以搜索算法找到的信息作为背景上下文&#xff0c;来辅助大语言模型&#xff08;Large Language Model, LLM&#xff09;生成…

CentOS部署NFS

NFS服务端 部署NFS服务端 sudo yum install -y nfs-utils挂载目录 给 NFS 指定一个存储位置&#xff0c;也就是网络共享目录。一般来说&#xff0c;应该建立一个专门的 /data 目录&#xff0c;方便起见使用临时目录 /tmp/nfs&#xff1a; mkdir -p /tmp/nfs #修改权限 chmo…

vue 引入 emoji 表情包

vue 引入 emoji 表情包 一、安装二、组件内使用 一、安装 npm install --save emoji-mart-vue二、组件内使用 import { Picker } from "emoji-mart-vue"; //引入组件<picker :include"[people,Smileys]" :showSearch"false" :showPreview&q…

【飞桨AI实战】基于PP-OCR和ErnieBot的智能视频问答

前言 本次分享将带领大家从 0 到 1 完成一个基于 OCR 和 LLM 的视频字幕提取和智能视频问答项目&#xff0c;通过 OCR 实现视频字幕提取&#xff0c;采用 ErnieBot 完成对视频字幕内容的理解&#xff0c;并回答相关问题&#xff0c;最后采用 Gradio 搭建应用。本项目旨在帮助初…

python ofd转pdf及图片

本文部分内容参考&#xff0c;如有侵权请联系删除&#xff1a;使用 easyofd 解析ofd 文件_python模块easyofd如何使用-CSDN博客 背景需求&#xff1a;需要将邮箱中得ofd格式发票提取出来转换成pdf或者图片。 在网上搜了发现使用pyofd包&#xff0c;安装之后使用各种问题&…

[排序算法]2. 图解选择排序及其代码实现

选择排序 选择排序就是重复“从待排序的数据中寻找最小值&#xff0c;将其与序列最左边的数字进行交换”这一操作的算法。在序列中寻找最小值时使用的是线性查找。 算法步骤: 1.使用线性查找在数据中寻找最小值, 于是我们找到了最小值1 2.将最小值1与序列最左边的…

在某云服务器上搭建公网kali linux2.0

前提&#xff1a; 可用的 CVM 实例 挂载一个系统盘之外的盘&#xff0c;安装完成后可卸载&#xff01; 创建实例&#xff0c;安装centos7系统&#xff01; 然后执行fdisk -l看磁盘的情况 在这里我将把镜像写入vdb这块数据盘 非 root 的情况下记得sudo执行以下命令 注意&…

Java中的判断校验非空问题

目录 字符串 字符串是空的情况 字符串不是空的情况 对象 对象是空的情况 对象不是空的情况 前端传的 int ,double类型等等 Optional 判断情况 https://www.cnblogs.com/zhangboyu/p/7580262.htmlhttps://www.cnblogs.com/zhangboyu/p/7580262.html 值为空的情况,不会…

网络模型-物理层技术

一、堆叠技术 堆叠技术通过堆叠端口和堆叠连接线将多台支持堆叠特性的交换机设备组合在一起&#xff0c;从逻辑上组合成一台交换机设备。通过组建堆叠&#xff0c;可以达到扩展网络能力、提高设备可靠性的目的。 堆叠的种类:链形和环形堆叠 堆叠 (设备虚拟化): 将多台设备通过…

项目9-网页聊天室8(消息的发送和接收之websocket)

这是整个项目最最核心的部分. 但是这个部分的编写&#xff0c;需要依赖"基础设施" 包括不限于前面已经实现的 主界面,用户管理,会话管理, 好友管理, 消息管理 等等.... 发送消息,和接收消息,需要"实时传输 张三 发了一条消息,李四 这边立即就能接收到, 这样的…

进程间通信(下)

1. system V共享内存 共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间&#xff0c;这些进程间数据传递不再涉及到内核&#xff0c;换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据 那么这到底是为什么呢&#xff1f; 1.1 共享内存示意…