选择显示字体大小

用asp制作个性化的调查板

     用asp制作个性化的调查板
  
    现在,在网上做调查已经十分普遍了,很多商业网站的网页上常放有各种主题的调查板,一些商业网站也免费为网友提供调查板,比如:博大(poll.bodachina.com)。因为网络的普及,网上调查往往能达到较好的效果。在自己的个人站点上放一个趣味问题调查板,着实能为网站添色不少;况且通过调查结果你能更多更准确了解网友对自己站点的看法。作为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,resizable=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以上
  
    


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons