| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5880 人关注过本帖
标题:如何实现表中比对避免重复提交
只看楼主 加入收藏
bsthq
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-8-25
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:10 
如何实现表中比对避免重复提交
各位老师,本人菜鸟一个,拿网上的源码学习,有想法却不知道如何实现,实在搞不懂,现在请教老师们帮助。
有一个表list ,我想添加的时候避免重复提交,就是adddate(提交时间)和selpayer(订餐类型)两个字段与表单输入的做比较,如果表中有记录,就提示“记录已添加,否则就执行添加操作。

下面是添加源码。
InOut = Request("add")
If Request.form("add")=" 添 加 " Then
adddate = Request.Form("adddate")
selpayer = Request.Form("selpayer")
seltype = Request.Form("seltype")
moneys = Trim(Request.Form("moneys"))
pjna = Trim(Request.Form("pjna"))
if seltype="" then
Response.Write "<script>alert('请用管理员帐号添加订餐类型!');location='javascript:history.back(-1)';</SCRIPT>"
Response.End
end if
if not isnumeric(moneys) Then
Response.Write "<script>alert('请输入数字整数!');location='javascript:history.back(-1)'</SCRIPT>"
Response.End
end if
Set rs = Server.CreateObject("ADODB.RecordSet")
Sql = "Select * From
    "
    rs.Open Sql,Conn,1,3
    rs.addNew
    rs("InOut") = InOut
    rs("PayTypeID") = seltype
    rs("Moneys") = moneys
    rs("Project") = checkform(pjna)
    rs("addTime") = adddate
    rs("data") = adddate
    rs("etime") = now()
    rs("user") = Request.Cookies("id")
    rs.Update
    rs.Close
    Response.Write "<script>alert('操作成功!');this.location.href='pay.asp';</SCRIPT>"
    End if
    %>
    <html>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <link href="images/css.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
    <script>

    var ie =navigator.appName=="Microsoft Internet Explorer"?true:false;
    function $(objID)
    {

    return document.getElementById(objID);

    }


    function CheckForm() {
             if (document.form1.adddate.value=="")
               {
               alert("请选择日期!");
               return false;
               }
             if (document.form1.moneys.value=="")
               {
                alert("份数不能为空!");
                document.form1.moneys.focus();
                return false;
               }
             if (document.form1.pjna.value=="")
              {
                alert("项目名称不能为空!");
                document.form1.pjna.focus();
                return false;
               }
             if (document.form1.seltype.value=="")
               {
                alert("请选择订餐类型!如果没有请先添加!");
                return false;
               }
    }
    </script>
    <script type="text/javascript" src="images/time.js"></script>
    <table width="100%" border="0" align=center cellpadding="6" cellspacing="0">
      <form action="" method=post name=form1 onSubmit="return CheckForm()">
        <tr>
          <td height=25 colspan=5 align="center" bgcolor="#F9F9F9"><b>
    <%If InOut=1 Then
    Response.Write "<font color=blue>新增订餐</font>"
    Else
    Response.Write "<font color=red>添 加 支 出</font>"
    End if
    %>     </b></td>
        </tr>
        <tr>
          <td width="35%" align="right">选择日期:</div></td>
          <td colspan="4" ><input name="adddate"  type="text" size="20" readonly="readonly" onclick="showcalendar(event, this);" onfocus="showcalendar(event, this);if(this.value=='0000-00-00')this.value=''" /></td>
        </tr>
        <tr>
          <td align="right">就餐类型:</td>
          <td colspan="4"><select name="seltype">
    <%
    set rs=server.createobject("adodb.recordset")
    sql="select * from [type] Where InOut="&InOut&""
    rs.open sql,conn,1,1
    response.write "<option sel=selected value='' name=seltype>请选择</option>"
    do while not rs.eof   
    response.write "<option " & sel & " value='"+CStr(rs("ID"))+"' name=seltype>"+rs("PayType")+"</option>"+chr(13)+chr(10)
    rs.movenext
    loop
    rs.close
    %>
            </select></td>
        </tr>
        <tr>
          <td align="right">份数:</td>
          <td colspan="4" >
          <input name="moneys" type="text" size="20" maxlength="10" />
          (输入数字整数 如:2)</td>
        </tr>
        <tr>
          <td ><div align="right">项目备注:</div></td>
          <td colspan="4" ><input name="pjna" type="text" size="50" maxlength="50" /></td>
        </tr>
        <tr>
          <td colspan="5" align="center" ><input type="submit" name="add" value=" 添 加 " /></td>
        </tr>
      </form>
    </table>
    </body>
    </html>
搜索更多相关主题的帖子: Request 如何 订餐 记录 网上 
2016-06-12 22:06
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:5 
利用关键字段检查,不存在的就直接添加,存在的就提示用户重复。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2016-06-13 06:36
bsthq
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-8-25
收藏
得分:0 
不成功,请老师修改一下。


<!--#include file="heck.asp"-->
<%
InOut = Request("add")
If Request.form("add")=" 添 加 " Then
adddate = Request.Form("adddate")
selpayer = Request.Form("selpayer")
seltype = Request.Form("seltype")
moneys = Trim(Request.Form("moneys"))
pjna = Trim(Request.Form("pjna"))

if seltype="" then
Response.Write "<script>alert('请用管理员帐号添加订餐类型!');location='javascript:history.back(-1)';</SCRIPT>"
Response.End
end if
if not isnumeric(moneys) Then
Response.Write "<script>alert('请输入数字整数!');location='javascript:history.back(-1)'</SCRIPT>"
Response.End
end if
Set rs = Server.CreateObject("ADODB.RecordSet")
Sql = "Select * From
    where addTime='"&adddate&"' and PayTypeID='"&seltype&"'"
    rs.Open Sql,Conn,1,3

    If rs.eof Then
    rs.addNew
    rs("InOut") = InOut
    rs("PayTypeID") = seltype
    rs("Moneys") = moneys
    rs("Project") = checkform(pjna)
    rs("addTime") = adddate
    rs("data") = adddate
    rs("etime") = now()
    rs("user") = Request.Cookies("id")
    Response.Write "<script>alert('操作成功!');this.location.href='pay.asp';</SCRIPT>"
    rs.Update
    rs.Close
    set rs=nothing
    Else
      Response.Write "<script>alert('已经存在此条信息!');location='javascript:history.back(-1)'</SCRIPT>"
      response.end()
    End If
    End if
    %>


    <html>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <link href="images/css.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
    <script>

    var ie =navigator.appName=="Microsoft Internet Explorer"?true:false;
    function $(objID)
    {

    return document.getElementById(objID);

    }


    function CheckForm() {
             if (document.form1.adddate.value=="")
               {
               alert("请选择日期!");
               return false;
               }
             if (document.form1.moneys.value=="")
               {
                alert("份数不能为空!");
                document.form1.moneys.focus();
                return false;
               }
             if (document.form1.pjna.value=="")
              {
                alert("项目名称不能为空!");
                document.form1.pjna.focus();
                return false;
               }
             if (document.form1.seltype.value=="")
               {
                alert("请选择订餐类型!如果没有请先添加!");
                return false;
               }
    }
    </script>
    <script type="text/javascript" src="images/time.js"></script>
    <table width="100%" border="0" align=center cellpadding="6" cellspacing="0">
      <form action="" method=post name=form1 onSubmit="return CheckForm()">
        <tr>
          <td height=25 colspan=5 align="center" bgcolor="#F9F9F9"><b>
    <%If InOut=1 Then
    Response.Write "<font color=blue>新增订餐</font>"
    Else
    Response.Write "<font color=red>添 加 支 出</font>"
    End if
    %>     </b></td>
        </tr>
        <tr>
          <td width="35%" align="right">选择日期:</div></td>
          <td colspan="4" ><input name="adddate"  type="text" size="20" readonly="readonly" onclick="showcalendar(event, this);" onfocus="showcalendar(event, this);if
    (this.value=='0000-00-00')this.value=''" /></td>
        </tr>
        <tr>
          <td align="right">就餐类型:</td>
          <td colspan="4"><select name="seltype">
    <%
    set rs=server.createobject("adodb.recordset")
    sql="select * from [type] Where InOut="&InOut&""
    rs.open sql,conn,1,1
    response.write "<option sel=selected value='' name=seltype>请选择</option>"
    do while not rs.eof   
    response.write "<option " & sel & " value='"+CStr(rs("ID"))+"' name=seltype>"+rs("PayType")+"</option>"+chr(13)+chr(10)
    rs.movenext
    loop
    rs.close
    %>
            </select></td>
        </tr>
        <tr>
          <td align="right">份数:</td>
          <td colspan="4" >
          <input name="moneys" type="text" size="20" maxlength="10" />
          (输入数字整数 如:2)</td>
        </tr>
        <tr>
          <td ><div align="right">项目备注:</div></td>
          <td colspan="4" ><input name="pjna" type="text" size="50" value=" 预订餐" maxlength="50" /></td>
        </tr>
        <tr>
          <td colspan="5" align="center" ><input type="submit" name="add" value=" 添 加 " /></td>
        </tr>
      </form>
    </table>
    </body>
    </html>
2016-06-13 09:57
bsthq
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-8-25
收藏
得分:0 
不管如何操作,就是显示"已经存在此条信息",点确定,也又返回添加界面。 或者显示添加成功,看数据库又没有见数据添加。真是晕呀
2016-06-13 16:49
bsthq
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-8-25
收藏
得分:0 
这个是我从http://down.

下载的guke老师的源码,想学习设计过程,现在想修改里面的add.asp文件,实现提交新数据时如果与数据库list表中的addtime和paytype两个记录值相同时,提示数据重复,如果不重复就添加。可惜就是不会如何改。哪位老师帮改一下。谢谢!
2016-06-13 16:54
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
抱歉!那么长的代码,我没有时间慢慢检查,我仅能提供我的思路。
调试代码是件麻烦的事情,可以在需要的地方插入显示变量值的语句或提示语句,以便观察程序执行的情况,调试通过后再删除或注释掉这些语句。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2016-06-13 19:50
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:5 

基本思路:

set re1= server.createobject("adodb.recordset")
    rsql="select * from main where xh='"&a1&"' "
    re1.open rsql,conn,1,1
  
 IF not re1.eof then %>
  
   response.write"此序号已存在,不能添加!"&"<a href='insert.asp'>请返回重新输入</a>"-->
  或 <!--'response.Write "<script LANGUAGE='javascript'>alert('此序号已存在,不能添加!');window.location.href='insert.asp';</script>"-->

re1.close
      response.end
 ELSE
.....
end if
2016-06-15 09:06
bsthq
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-8-25
收藏
得分:0 
老师提供的思路,我也试了。如果是多条件的判断就不成功。总是提示信息已近存在。出现这种情况是什么原因,还需要老师指教。
目前我想对添加时间(addtime)\项目(paytypeID)\用户(USER)三个条件同时判断,如果数据表中存在相同的数据,就返回修改,否则就添加数据。list表的数据机构如下:
字段名称    字段类型
ID           自动编号
paytypeID    数字
moneys       数字
project      文本
addtime      日期/时间
user         数字
etime        日期/时间

程序代码:
<%

InOut = Request("add")
If Request.form("add")=" 添 加 " Then
adddate = Request.Form("adddate")
selpayer = Request.Form("selpayer")
seltype = Request.Form("seltype")
moneys = Trim(Request.Form("moneys"))
pjna = Trim(Request.Form("pjna"))
user = Request.Cookies("id")
set rs=server.createobject("adodb.recordset")
sqltext="select * from list where addTime='"&adddate&"' and PayTypeID='"&seltype&"' and user='"&user&"'"
rs.open sqltext,conn,3,3
if not rs.Eof then
response.write"<SCRIPT language=JavaScript>alert('已经有"&adddate&","&seltype&","&user&"信息!');javascript:history.back(-1)</SCRIPT>"
Response.End
end if
if seltype="" then
Response.Write "<script>alert('请用管理员帐号添加费用类型!');location='javascript:history.back(-1)';</SCRIPT>"
Response.End
end if
if not isnumeric(moneys) Then
Response.Write "<script>alert('请输入数字整数金额!');location='javascript:history.back(-1)'</SCRIPT>"
Response.End
end if
Set rs = Server.CreateObject("ADODB.RecordSet")
Sql = "Select * From 
    " rs.Open Sql,Conn,1,3 rs.addNew rs("InOut") = InOut rs("PayTypeID") = seltype rs("Moneys") = moneys rs("Project") = checkform(pjna) rs("addTime") = adddate rs("data") = adddate rs("etime") = now() rs("user") = Request.Cookies("id") rs.Update rs.Close Response.Write "<script>alert('操作成功!');this.location.href='pay.asp';</SCRIPT>" End if %>
2016-06-17 12:14
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
调试时可以将判断的内容显示出来,注意看看是否一致,前后是否会有空格符。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2016-06-18 07:26
bsthq
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2010-8-25
收藏
得分:0 
请问老师,在哪个地方加入什么语句,可以使查询的结果显示出来。
2016-06-19 09:49
快速回复:如何实现表中比对避免重复提交
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022552 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved