二、处理用户选择(select.asp)
依据上面的调查选项,我们得出记录调查得票的数据库researchdb.mdb的设计(以Access为例),表名为:research。如果你的数据库和表没有存为以上的名字,那么在后面的程序和操作中你不要忘记也相应修改过来。
存放调查投票数的表research:
字段名 数据类型 默认值
id 自动编号 1
select1 数字 0
select2 数字 0
select3 数字 0
select4 数字 0
select5 数字 0
select6 数字 0
select7 数字 0
建好数据库后,我们来在服务器上建立数据源。首先,运行“控制面板”中的“ODBC”,选择“系统DSN”,按“添加”按钮,选取“Microsoft Access Driver”,选定后按“完成”按钮,然后在ODBC设定中“数据源名”输入框输入数据库名称,本例中为researchdb,然后按下“选取”按钮选择数据库文件(你不会说你忘记了刚刚设计的数据库存在那里了吧),选定后按“确定”,你即可看到新建的数据源 researchdb。这样,我们就可以在ASP中调用了。
select.asp:
< %
下面的if语句是通过验证selected是否为空来判断用户是否作了选择
if request.form("options") < >Empty then
% >
< %
下面的if语句是通过比较Request的两个collection(ServerVariables和Cookies)的值
来防止用户连续按提交而影响调查的结果
if not Request.ServerVariables("REMOTE_ADDR")=request.cookies("IPAddress") then
把访问客户的IP信息写入Cookies
response.cookies("IPAddress")=Request.ServerVariables("REMOTE_ADDR")
% >
< %
建立连接(Connection)对象,打开记录调查结果的数据库
set conn=server.createobject("ADODB.CONNECTION")
conn.open "researchdb"
% >
< %
定义变量
dim rs
dim sql
dim selected
selected=request.form("options")
建立记录集合(Recordset)对象,用方法Open打开对象,同时修改对应的数据
set rs=server.createobject("adodb.recordset")
修改数据表ressearch中的数据,即对应的投票数增加1
sql="update research set select"&selected&"=select"&selected&"+1 where id=1"
rs.open sql,conn,3,3
从内存中清除记录集合对象
set rs=nothing
关闭连接
conn.close
从内存中清除连接对象
set conn=nothing
连接到浏览调查结果的页面
response.redirect "viewresult.asp"
else
Response.write "投票失败提示:您刚才已投了票,谢谢您的支持!"
end if
else
Response.write "投票失败提示:您忘记选择了!"
end if
% >