|   为了调查了解站点访问者对特定问题的立场,我们可以在站点中设置投票程序,站点访问者直接选择答案,程序自动对所有答案进行统计和显示.   下面是一个简单的flash版的投票程序,后台使用xml+ asp+ mysql:因为大多web工作 
者对asp比较熟悉,xml可以将复杂的问题简化,采用mysql的原因是access我没有安装,程序不需要任何存储过程,所以无需动SQL Server ,Oracle等重兵器.   问题分析:本投票程序是选择题,故我们用一个字段存储用户的答案即可.   建立数据库和表:表名称和数据库名称任意,字段定义如下:   voteid无符号整数自动编号   result短整数存储用户选择本程序范围在0-2   userip char (25)用户ip地址实际长度21   message char(255)附加消息//这个程序未用   使用mysql-front创建,如下图所示: 
 图1   设计flash用户界面:从window/components/flash ui components中拖三个RadioButton到舞台中,   设置标签,其他为默认值。(从属性面板和组件参数面板均可以设置) 
 图2   这里将使用一个图表组件(HTML UI Components中的Subtype),你可以到MM扩充资源www.macromedia.com/exchange/flash下载.   参数设置如下: 
 图3 
 图4   flash端的程序非常简单只有三行:   //在时间轴的第一帧,加入下面的代码   //标签名称为开始投票吧!的按钮,事件句柄为sendvote,在点击后执行下面的自定义函数   function sendvote () {   _root.mytb.readData(http://localhost/votexml.asp?selectresult=+radioGroup.getInstance());   }   服务器端程序的编写,上面你可能看到有一个votexml.asp的文件,下面我们就来建立它.   代码如下:  
 <%@LANGUAGE=VBSCRIPT CODEPAGE=936%>
 <%
 set conn=server.CreateObject(adodb.connection)
 conn.open dsn=mysql
 set rec=server.CreateObject(adodb.recordset)
 %>
 <% if request(selectresult)<> then
 userip= Request.ServerVariables(REMOTE_ADDR)
 selectresult=request.QueryString(selectresult)
 rec.open select count(*) as count from votetable where votedate>'&now()-0.125 & ' and userip='&userip&',conn
 if rec(count)>0 then
 bzh=重复投票无效
 rec.close
 'response.Write(请不要重复投票)
 else
 rec.close
 bzh=投票有效
 conn.execute insert into votetable(userip,result) values('&userip&',& selectresult&)
 end if
 else
 bzh=查看投票
 end if
 rec.open SELECT result,count(*) as count FROM votetable group by result ORDER BY result asc,conn
 t0=cint(rec(count))
 rec.movenext
 t1=cint(rec(count))
 rec.movenext
 t2=cint(rec(count))
 tcount=t0+t1+t2
 Response.contenttype=text/xml
 %>
 <% Response.write <?xml version='1.0' encoding='gb2312'?>
 response.Write(<root bz='&bzh&'>)
 Response.write <base><data value='相信' color='0xff00cc'/><data value='不相信' color='0x0000CC'/><data value='现在还不清楚' color='0x00cc00'/></base>
 response.Write(<record value='共&tcount&票' color='0x0000CC'>)
 response.Write(<data value='&t0/tcount&'/>)
 response.Write(<data value='&t1/tcount&'/>)
 response.Write(<data value='&t2/tcount&'/></record>)
 %>
 <%
 Response.write </root>
 rec.close
 set rec=nothing
 conn.close
 set conn=nothing
 %>
   将文件保存为votexml.asp,放置到web路径为/的目录中,即可.   备注:实际应用到web服务器的时候,请在flash中使用相对路径.flash movie和votexml.asp可以放置到任何目录中.  |