主题:[讨论][求助]ASP投票系统限制条件问题?!
JavaIlove
[专家分:0] 发布于 2007-08-01 08:52:00
各位大佬:小弟的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个回复)
沙发
qqlxinye [专家分:650] 发布于 2007-08-01 09:56:00
有一个简单的方法是用session("voted")="0"未投,session("voted")="1"投
板凳
tianyu123 [专家分:2570] 发布于 2007-08-01 09:56:00
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 楼
JavaIlove [专家分:0] 发布于 2007-08-01 10:43:00
我试了,没反应.....
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 楼
JavaIlove [专家分:0] 发布于 2007-08-01 10:51:00
<%
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 楼
tianyu123 [专家分:2570] 发布于 2007-08-01 11:16:00
你我设计的数据库可能不一样!
我设计的数据库是是这样的:
字段 id(数字) agreevote(数字) apposevote(数字)
值 1(主键) 0(默认值) 0(默认值)
按我设计的数据库形式试试,或按你的设计,但需要相应的改一下代码.
对了上面的代码修改过,不是原来的了!
6 楼
JavaIlove [专家分:0] 发布于 2007-08-01 11:33:00
我的数据库表是这样的:
vote
id cno cname job pic imfor agreevote appose
typeid
自动编号 投票对象 对象姓名 职务 照片 说明 支持票数 反对票数
投票类型
你能不能再帮我改一下?谢谢了
7 楼
longlong16 [专家分:10670] 发布于 2007-08-01 11:35:00
可以用js控制投票后30秒内按钮enabled为false,也就是不可用
8 楼
JavaIlove [专家分:0] 发布于 2007-08-01 11:42:00
现在的问题的,它没有反应,不会提示错误,也不会提示投票成功或是30秒后再投票!!
9 楼
JavaIlove [专家分:0] 发布于 2007-08-01 11:57:00
tianyu123大哥,果然是id出问题,谢谢你的指点!
现在只能投一个ID号,但是我想ID号是随着投票者选的对象的变化而变化的,就是说我有些人想投A,有的人想投B,能不能设置动态的ID呢?每个人的ID在数据库里已经是固定的,关键是投票者选里个ID?
希望你能再帮帮我?
10 楼
JavaIlove [专家分:0] 发布于 2007-08-01 13:19:00
谢谢各位大哥,特别鸣谢taioyu123大哥的帮忙!谢谢问题已经解决
我来回复