对于FLASH来生成饼形我们已经不是很陌生,我们就用它来显示投票结果,一般我调查结果我们都是用图片或者颜色块来表示各项的结果了.
这里就不讨论FLASH如何实现饼形的结果了,我们要作的就是把调查结果用FLASH+ASP按上面的形式实现出来.
首先用ASP把调查结果写成XML文件.
Response.charset="gb2312"
Response.ContentType="text/xml"
在ASP文件的头部使用上面的语句可以将结果显示成XML文件格式.
下面我们定义一下XML文件的格式:
<pieData QUESTION="你觉得站点如何?">
<pie color="FF0000">
<value>14</value>
<text>颜色不好</text>
</pie>
<pie color="00FF00">
<value>37</value>
<text>没有内容</text>
</pie>
<pie color="0000FF">
<value>19</value>
<text>更新太慢</text>
</pie>
<pie color="FFFF00">
<value>7</value>
<text>没有交互性</text>
</pie>
<pie color="FF00FF">
<value>14</value>
<text>都不喜欢</text>
</pie>
</pieData>
其中:QUESTION=调查的标题
color=颜色
value=投票数
text=投票选项
下面是我生面XML所用的ASP文件,各位可以参考一下:
文件名:xmlpoll.asp 把此次投票内容列出来,显示成XML文件.
代码拷贝框
<!--#include file="../admin/config.html"-->
<!-- #include file='colors.asp' -->
<%
Response.expires=0
Response.charset="gb2312"
Response.ContentType="text/xml"
'请不要修改此代码
dim lngPollID
lngPollID=Request("PollID")
'如果没有取得数据 就取第一个投票
if (not isnumeric(lngPollid)) or lngPollid="" then
SQL = "select top 1 id from " & strDbTable & "title order by id desc"
set rs1=conn.execute(SQL)
lngPollid=rs1("id")
rs1.close
set rs1=nothing
end if
'取得调查名和总的投票数
dim rs
dim strTitle ,lngVoter
SQL = "SELECT * FROM " & strDbTable & "title WHERE id = " & int(lngPollid)
Set rs=conn.execute(SQL)
strTitle=rs("title")
lngVoter=rs("votes")
'防止除零
if lngVoter=0 then
lngVoter=1
end if
'取得调查的投票列表
SQL = "SELECT * FROM " & strDbTable & "vote WHERE poll_id=" & int(lngPollid) & " order by answer_id asc"
set rs=conn.execute(SQL)
'代码替换功能 防止一些不必要的符号
function ReplaceChr(Content)
'Content=Replace(Content,"源字符","目标字符")
Content=Replace(Content,"%","%25")
Content=Replace(Content,"&","%26")
Content=Replace(Content,"+","%2b")
Content=Replace(Content,chr(13),"%0d")
ReplaceChr=Content
end function
i=1
StrXML="<pieData QUESTION="""&strTitle&""">"
do until rs.eof
StrXML=StrXML&"<pie color="&color(i)&">"
StrXML=StrXML&"<value>"&rs("no_votes")+1&"</value>"
StrXML=StrXML&"<text>"&ReplaceChr(rs("answer"))&"</text>"
StrXML=StrXML&"</pie>"
i = i+1
rs.MoveNext
Loop
strXML=strXML &"</pieData>"
set i=nothing
rs.close
set rs=nothing
conn.close
set conn=nothing
response.Write(strXML)
%>
[Ctrl+A 全部选择 然后拷贝]
FLASH显示面页:
graph.asp 显示FLASH
代码拷贝框
<% Language=VBScript%>
<html>
<head>
<title>
投票结果
</title>
</head>
<body LEFTMARGIN="0" TOPMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">
<%
Dim Weeknum,PollID
PollID=Request.Querystring("PollID")
Dim Dtrdatasrc
Dtrdatasrc="xmlpoll.asp?PollID="&PollID
Dtrdatasrc=flshpollencURL(Dtrdatasrc)
%> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="https://www.365jz.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="550" height="220" align="middle">
<param name=movie value="flashpoll.swf?dataurl=<%=Dtrdatasrc%>"> <param name=quality value=high>
<embed src="flashpoll.swf?dataurl=<%=Dtrdatasrc%>" quality=high pluginspage="https://www.365jz.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="550" height="220" align="middle" bgcolor=#99ccff>
</embed> </object>
</body>
</html>
<%
Function flshpollencURL(strURL)
strURL=replace(strURL,"?","&")
strURL=replace(strURL,"&","*")
flshpollencURL=strURL
End Function
%>
[Ctrl+A 全部选择 然后拷贝]
上面就是实现FLASH投票的核心文件了.
下面是我们所要用到的FLASH文件和调用的XML文件格式:
文件名:pieData.xml 按右键保存
代码拷贝,请用pieData.xml命名.
<?xml version="1.0"?>
<pieData QUESTION="你觉得站点如何?">
<pie color="FF0000">
<value>14</value>
<text>颜色不好</text>
</pie>
<pie color="00FF00">
<value>37</value>
<text>没有内容</text>
</pie>
<pie color="0000FF">
<value>19</value>
<text>更新太慢</text>
</pie>
<pie color="FFFF00">
<value>7</value>
<text>没有交互性</text>
</pie>
<pie color="FF00FF">
<value>14</value>
<text>都不喜欢</text>
</pie>
</pieData>
[Ctrl+A 全部选择 然后拷贝]
FLASH文件:
flashpoll.swf
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛