放飞你的梦想--翱翔我的天空 | 会员登陆 | 繁體中文 | 站点地图 | 站长博客
 | 网站首页 | 文章中心 | IT 前沿 | 清怡画风 | 视频教程 | 资源下载 | 精彩图库 | 博客文赏 | 天空论坛 | 访客留言 | 音乐版 | 
    本站全新推出IT 前沿频道欢迎大家访问 地址 http://it.tkbbs.com  [风雪残士  2005年12月9日]            本站推出新浪VIVI收藏夹服务,欢迎使用  [风雪残士  2005年10月18日]        
您现在的位置: 翱翔翼站 >> 文章中心 >> 编程开发 >> 网页开发 >> ASP编程 >> 文章正文 今天是:
用ASP制作张扬个性的调查系统 【字体:
作 者:佚名 文章来源:网络 更新:2006-2-18 11:06:17 点击:







  随着网络的普及,网上调查往往能达到较好的效果。在自己的个人站点上放一个趣味问题调查板,着实能为网站添色不少;况且通过调查结果你能更多更准确了解网友对自己站点的看法。作为Webmaster,如果你的网站也需要就某个主题进行调查,而你又讨厌使用别人免费提供的调查板(免费往往是要付出代价的,比如打广告!),那么我建议你花十几分钟时间看完这篇介绍用ASP制作调查板的文章。你只要把文中的代码Copy到你的机子上,稍做修改,你立即就拥有一个属于你自己的个性化调查板。好了,打起精神往下看吧。

  本调查板共有三个文件:显示调查问题(research.html)、处理用户选择(select.asp)、浏览调查结果(viewresult.asp)。设计思路为:ASP取得由表单发来的信息,并据此修改记录调查得票数的数据库,然后ASP读取数据库,获得各个调查问题的得票数目,通过得票数多少来调节对应条形图显示的宽来直观比例地给出调查结果。在程序的关键处,我都给出了较为详细的注释,这里就不再讲述ASP的基本知识。读者可以到陶吧ASP专栏查阅。当然,我希望你在自己的服务器上调试程序时,有不懂的地方,还是查查身边的ASP技术手册,看看对象、方法或函数的详细语法试着修改,看看结果如何变化——这可是学习编程的一个好方法呢。

  一、显示调查问题(research.html)

  调查问题的设计要依据实际情况,或讲究实用性或讲究趣味性,在网页上显示的风格也或朴素或活泼,本例中是笔者主页上的一个关于“21世纪最重要的是什么?”的趣味调查,为说明问题,下面的代码中省略了美观修饰的代码,你自己动手设计时完全可以使用表格等技巧美化调查问题的显示。
researchindex.html:

以下是引用片段:
〈 html 〉
〈 title 〉调查板测试〈 /title 〉
〈 head 〉
〈 !-- start:定义新开的窗口-- 〉
〈 script language=javascript 〉
〈 !-- 
var newWindow = null
function OpenWindow(htmurl)

if (! newWindow || newWindow.closed)
{
newWindow = 
window.open(htmurl,"newwin","toolbar=no,resiza =no,scrollbars=no,width=400,height=280");
}else
{
newWindow.focus();
}
}
//-- 〉
〈 /script 〉
〈 !-- end:定义新开的窗口-- 〉
〈 /head 〉
〈 body 〉
〈 !-- start:调查题目、选项 -- 〉
〈 p 〉您认为21世纪最重要的是什么?〈 /p 〉
〈 form method="POST" action="vote/select.asp" name="research" LANGUAGE="javascript" 
onSubmit="OpenWindow()" target="newwin" 〉 
〈 p align="left" 〉 
〈 br 〉
〈 input type="radio" value="1" name="Options" 〉知识(知识就是力量)〈 br 〉 
〈 input type="radio" value="2" name="Options" 〉学历(学历社会没有终结)〈 br 〉 
〈 input type="radio" value="3" name="Options" 〉金钱(经济就是基础)〈 br 〉 
〈 input type="radio" value="4" name="Options" 〉爱情(永不进入坟墓的爱情)〈 br 〉 
〈 input type="radio" value="5" name="Options" 〉理想(天啦,理想是什么)〈 br 〉 
〈 input type="radio" value="6" name="Options" 〉民主意识(关心政治)〈 br 〉 
〈 input type="radio" value="7" name="Options" 〉科学思想(科教兴国)〈 br 〉
〈 input type="submit" value="提交" name="voting" 〉 
〈 input type="button" value="查看" name="viewing" onClick="OpenWindow(vote/viewresult.asp)" 〉
〈 /form 〉 
〈 !-- start:调查题目、选项 -- 〉
〈 /body 〉
〈 /html 〉  

  二、处理用户选择(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
% 〉  

  三、浏览调查结果(viewresult.asp)

  本例中使用条形图来直观显示调查结果,方法是用选项的投票数占总投票数的百分比值乘上5,得出的值作为条形图bar.gif显示的宽(可用常见的图象工具制作一个渐变色的小条形图,或是到网上down一个)。为了给出带两为小数的得票的百分比,程序中使用了VBScript中的四舍五入函数Round。为了美观,把调查结果放到表格中显示,如图所示。下面给出的代码中略去了表格的设计

viewresult.asp 
以下是引用片段:
〈 %
set conn=server.createobject("ADODB.CONNECTION")
conn.open "researchdb"
% 〉 
〈 %
dim rs
dim sql
dim select1
dim select2
dim select3
dim select4
dim select5
dim select6
dim select7
dim total
set rs=server.createobject("adodb.recordset")
sql="select * from research where id=1"
rs.open sql,conn,1,1
total=rs("select1")+rs("select2")+rs("select3")+
_ rs("select4")+rs("select5")+rs("select6")+rs("select7")
判断总票数是否为0,确保下面的除法有效
if total 〉 0 then
select1=(rs("select1")/total)*100
select2=(rs("select2")/total)*100
select3=(rs("select3")/total)*100
select4=(rs("select4")/total)*100
select5=(rs("select5")/total)*100
select6=(rs("select6")/total)*100
select7=(rs("select7")/total)*100
% 〉
〈 p 〉谢谢您的参与,下面是当前的调查结果
〈 p 〉
◇知识:
〈 img src=bar.gif width=〈 %=int(select1*5)% 〉 height=4 〉
〈 %=rs("select1")% 〉人 占:〈 %=round(select1,2)% 〉%〈 br 〉 
◇学历:
〈 img src=bar.gif width=〈 %=int(select2*5)% 〉 height=4 〉
〈 %=rs("select2")% 〉人 占:〈 %=round(select2,2)% 〉%〈 br 〉 
◇金钱:
〈 img src=bar.gif width=〈 %=int(select3)*5% 〉 height=4 〉
〈 %=rs("select3")% 〉人 占:〈 %=round(select3,2)% 〉%〈 br 〉 
◇爱情:
〈 img src=bar.gif width=〈 %=int(select4)*5% 〉 height=4 〉
〈 %=rs("select4")% 〉人 占:〈 %=round(select4,2)% 〉%〈 br 〉 
◇理想:
〈 img src=bar.gif width=〈 %=int(select5)*5% 〉 height=4 〉
〈 %=rs("select5")% 〉人 占:〈 %=round(select5,2)% 〉%〈 br 〉 
◇民主意识:
〈 img src=bar.gif width=〈 %=int(select6)%*5 〉 height=4 〉
〈 %=rs("select6")% 〉人 占:〈 %=round(select6,2)% 〉%〈 br 〉 
◇科学思想:
〈 img src=bar.gif width=〈 %=int(select7)%*5 〉 height=4 〉
〈 %=rs("select7")% 〉人 占:〈 %=round(select7,2)% 〉%〈 /p 〉 
〈 p align="center" 〉已经有:〈 %=total% 〉人参加调查〈 br 〉〈 br 〉 
【〈 a href="javascript:window.close()" 〉关闭窗口〈 /a 〉】〈 /p 〉 
〈 p 〉 
〈 % 
else 
response.write "还没有人参与调查"
end if 
rs.close 
set rs=nothing
conn.close 
set conn=nothing
% 〉 

 

  附注:

  以上代码均在 WindowsNT4.0中文(Pack 6)/IIS4.0上调试通过。

  以下任何一种环境都可执行ASP:

   一、Windows NT Server 4.0 / IIS3.0以上
   二、Windows NT WorkStation 4.0 / Microsoft Peer Web Service3.0以上
   三、Windows 95/98 / Microsoft Personal Web Server 1.0a以上



文章录入:风雪残士    责任编辑:风雪残士 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    相关文章
    权限树中Checkbox的操作[Asp…
    用ASP/ASP.NET实现网络空间管…
    Asp.net+Xml开发网络硬盘
    asp.net 实现“九连环”小游…
    保存美丽记忆 用ASP.NET创建…
    ASP.NET中利用Crystal Repor…
    用ASP.NET设计高效邮件列表
    asp.net中调用Office来制作3…
    ASP.NET中实时图表的实现
    用ASP.NET结合XML制作广告管…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    最新文章 TOP10
    最新热门 TOP10
    最新推荐TOP10
    翱翔翼站拥有本站所有版权! Copyright © 2005 - 2008 5-IT.COM
    本站维护 :风雪残士

    浙ICP备05039908号
    努力打造国内最全的电脑技术资料库