回 帖 发 新 帖 刷新版面

主题:[讨论][求助]ASP投票系统限制条件问题?!

各位大佬:小弟的ASP初学者,不太会,所以要请教各位高手帮忙.小弟的问题如下:
  我想做一个投票系统,该系统用于触摸屏供员工投票,即不能用IP限制重复投票!现在后台已经做好了,前后台链接也做好了,现在就是投票过程不会做啊,求救啊!下面的一些代和数据库说明:
    <form name="form1" method="post" action="voted.asp">
            <input type="submit" name="agree" value="我要投蘚花"> 
            <input type="submit" name="appose" value="我要投鸡蛋">
          </form>
我想当我点击"我要投蘚花"这个按钮时,数据库表vote中的agreevote加1,当我点击"我要投鸡蛋"的时候数据库表vote中的apposevote加1,我还想加上一个条件,就是每隔30秒才能再投一次,防止重复投票又不能用IP做限制条件,高手们能不能帮帮我呀?
小弟在此谢过,滴点之恩,报以涌泉!谢谢
最好能帮我写好整个voted.asp,因为我都不会,谢谢
<!--#include file="conn.asp"-->数据库链接文件,
color=800000][b]两个主要的技术难关是:点击按钮,对应的票数加1;对投票加限制条件,能防止恶意投票就行![/b][/color]谢了

回复列表 (共10个回复)

沙发

有一个简单的方法是用session("voted")="0"未投,session("voted")="1"投

板凳

voted.asp

<!--#include file="conn.asp"-->
<%

if DateDiff("s",session("time"),now())<30 then
   response.write"<script>alert('请等30秒之后再进行投票!');history.go(-1);</script>"
else
agree=request.form("agree")
appose=request.form("appose")
set rs=server.createobject("adodb.recordset")
sql="select agreevote,apposevote from vote where id=1" '这里在数据库中加入一个id字段,值为1。以确定更新那行记录!
rs.open sql,conn,1,3
if not(rs.bof and rs.eof) then
   if agree="我要投蘚花" then
      rs("agreevote")=rs("agreevote")+1
   elseif appose="我要投鸡蛋" then
      rs("apposevote")=rs("apposevote")+1
   end if
      rs.update
      rs.close
      set rs=nothing
      conn.close
      set conn=nothing
      session("time")=now()
      response.write"<script>alert('恭喜!投票成功!');</script>"
end if
end if
%>

3 楼

我试了,没反应.....
if DateDiff("s",session("time"),now())<30 中的S表示什么?
我这样做的:
<%
dim rs
dim sql
set rs=server.createobject("adodb.recordset")
sql="update vote set agreevote=agreevote+1 "
rs.open sql,conn,3,3
set rs=nothing
conn.close
set conn=nothing
response.write "<script src=setpoll.js></script>"
%>
这样它可以支持票数加1,但我不知反对票怎样加?

4 楼


<%

if DateDiff("s",session("time"),now())<30 then
   response.write"<script>alert('请等30秒之后再进行投票!');history.go(-1);</script>"
else
agree=request.form("agree")
appose=request.form("appose")
set rs=server.createobject("adodb.recordset")
 rs.open sql,conn,1,3
if not(rs.bof and rs.eof) then
   if agree="我要投蘚花" then
      sql="update vote set agreevote=agreevote+1 "
   elseif appose="我要投鸡蛋" then
     sql="update vote set apposevote=apposevote+1 "
   end if
  
      rs.close
      set rs=nothing
      conn.close
      set conn=nothing
      session("time")=now()
      response.write"<script>alert('恭喜!投票成功!');</script>"
end if
end if
%>
我把你写的改成这样,它提示下面错误:
错误类型:
ADODB.Recordset (0x800A0BB9)
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
/touch/voted.asp, 第 11 行


浏览器类型:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) 

网页:
POST 37 ??? /touch/voted.asp

POST Data:
appose=%CE%D2%D2%AA%CD%B6%BC%A6%B5%B0

5 楼


你我设计的数据库可能不一样!

我设计的数据库是是这样的:

字段 id(数字)   agreevote(数字) apposevote(数字)
  值  1(主键)         0(默认值)        0(默认值)

按我设计的数据库形式试试,或按你的设计,但需要相应的改一下代码.

对了上面的代码修改过,不是原来的了!

6 楼


我的数据库表是这样的:
vote

id        cno      cname   job   pic   imfor   agreevote   appose   

typeid
自动编号 投票对象  对象姓名 职务 照片 说明   支持票数 反对票数
投票类型


你能不能再帮我改一下?谢谢了

7 楼

可以用js控制投票后30秒内按钮enabled为false,也就是不可用

8 楼

现在的问题的,它没有反应,不会提示错误,也不会提示投票成功或是30秒后再投票!!

9 楼


tianyu123大哥,果然是id出问题,谢谢你的指点!
现在只能投一个ID号,但是我想ID号是随着投票者选的对象的变化而变化的,就是说我有些人想投A,有的人想投B,能不能设置动态的ID呢?每个人的ID在数据库里已经是固定的,关键是投票者选里个ID?
希望你能再帮帮我?

10 楼

谢谢各位大哥,特别鸣谢taioyu123大哥的帮忙!谢谢问题已经解决

我来回复

您尚未登录,请登录后再回复。点此登录或注册