分享
 
 
 

用ASP制作张扬个性的调查系统

王朝asp·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

随着网络的普及,网上调查往往能达到较好的效果。在自己的个人站点上放一个趣味问题调查板,着实能为网站添色不少;况且通过调查结果你能更多更准确了解网友对自己站点的看法。作为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以上

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有