仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 425|回复: 6
打印 上一主题 下一主题

[学习教程] ASP网页编程之ASP+VML+DB完成投票统计项目

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:30:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。几个月前我看到过一名网友lshdic写的一篇用JS+VML的《利用Vml制造平面柱状投票统计图的完全程序》。
我以为这个办法十分不错,能够不利用图片就天生统计图,如今就让我们一同来用ASP完成这个程序。筹办事情:用ACCESS创建一个MDB数据库,名为vote.mdb,而且在数据库中创建以下两个表:









然后创建我们依照ASP开辟的常规创建毗连数据库的文件conn.asp
<%
conn.asp
Setconn=Server.CreateObject("ADODB.Connection")
conn.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&Server.MapPath("vote.mdb")
%>
显现投票项目标列表,由于我们要制造的是一个多项目标投票体系vote_list.asp
<!--#includefile="conn.asp"-->
<html>
<head>
<title>投票项目列表</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<linkhref="../images/main.CSS"rel="stylesheet"type="text/css">
</head>
<%
setrs=conn.execute("select*fromvotetitleorderbyvoteiddesc")
%>
<tableborder=1cellspacing="0"style="border-collapse:collapse"cellpadding="0"bgcolor="#ffffff"bordercolor="#000000"width=100%>
<tr>
<tdbgcolor="#EFEFEF">一切投票列表</td>
</tr>
<%dowhilenotrs.eof%>
<tr>
<td>编号:<fontcolor="#FF0000"><%=rs("voteid")%></font><ahref="vote.asp?voteid=<%=rs("voteid")%>"target="_blank"><%=rs("votetitle")%>
</a>(<%=rs("time")%>)</td>
</tr>
<%rs.movenext
loop
rs.close
setrs=nothing%>
</table>
</body>
</html>
投票显现页面vote_show.asp
<%ifrequest("voteid")=""then
response.write"参数没有指定。"
response.End()
endif%>
<!--#includefile="conn.asp"-->
<html>
<head>
<title>检察了局</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<STYLE>
td{font-size:12px}
body{font-size:12px}
v:*{behavior:url(#default#VML);}//这里声了然v作为VML公用变量
</STYLE>
<linkhref="../images/main.css"rel="stylesheet"type="text/css">
</head>
<%
dimvoteid
voteid=request("voteid")
setrs=conn.execute("selectcountfromvote,votetitlewherevotetitle.voteid="&voteid&"andvote.voteid=votetitle.voteidorderbyid")
iii=0
dowhilenotrs.eof
ii=ii+1
ifii=1then
ceocio=trim(rs("count"))
ceocio1=trim("array1["&iii&"]")
else
ceocio=trim(ceocio&","&rs("count"))
ceocio1=trim(ceocio1&"+array1["&iii&"]")
endif
iii=iii+1
rs.movenext
loop
rs.close
setrs=nothing
response.writeii
response.writeceocio1
%>
<script>
array1=newArray(<%=ceocio%>)//分歧的投票票数
allstr=<%=ceocio1%>
//alert(allstr)
//allstr=array1[0]+array1[1]+array1[2]+array1[3]+array1[4]+array1[5]//失掉总数
for(i=0;i<=<%=(ii-1)%>;i++){
mathstr=Math.round(100/(allstr/array1))//求百分之几,100/(总和/单个)
document.write("<v:rectfillcolor=limestyle=width:20;color:navy;height:"+500*<%=(ii-1)%>/(1000/mathstr)+"><br>%"+mathstr+"<br>"+array1+"人<v:Extrusionbackdepth=15pton=true/></v:rect>")
}
</script>
<%
voteid=request("voteid")
setrs=conn.execute("select*fromvote,votetitlewherevotetitle.voteid="&voteid&"andvote.voteid=votetitle.voteidorderbyid")
%>
<tableborder=1cellspacing="0"style="border-collapse:collapse"cellpadding="2"bgcolor="#ffffff"bordercolor="#000000"width=100%>
<tr>
<tdbgcolor="#EFEFEF">关于:<fontcolor="#FF0000"><%=rs("votetitle")%></font>的查询拜访了局:<br>
共有<b><fontcolor="#FF0000"><%=rs("total")%></font></b>人介入查询拜访<br>
(<%=rs("time")%>到<%=date%>)</td>
</tr>
<%dowhilenotrs.eof
dimi
i=i+1%>
<tr>
<td>选项<%=i%>:<%=rs("title")%><fontcolor="#FF0000"><%=rs("count")%>人</font></td>
</tr>
<%rs.movenext
loop
rs.close
setrs=nothing%>
<tr>
<td></td>
</tr>
</table>
<br>
<ahref="vote_list.asp">检察过往投票</a><br>
<ahref="vote.asp?voteid=<%=request("voteid")%>">投票本项目</a>
</body>
</html>
vote.asp
<!--#includefile="conn.asp"-->
<%ifrequest("voteid")=""then
setrs=conn.execute("selecttop1voteidfromvotetitleorderbyvoteiddesc")
voteid=rs("voteid")
rs.close
setrs=nothing
else
voteid=request("voteid")
endif%>
<html>
<head>
<title>UntitledDocument</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<linkhref="style.css"rel="stylesheet"type="text/css">
</head>
<body>
<%
ifrequest("action")="vote"then
加上","&request("voteid")","为了不使id为1的投票和id为11的投票混遐
ifinstr(request.cookies("vote"),","&request("voteid")&",")=0then
else
response.write"你已投过票了"
response.end
endif
sql="update[vote]setcount=count+1whereid="&request("votevalue")
conn.execute(sql)
sql="update[votetitle]settotal=total+1wherevoteid="&request("voteid")
conn.execute(sql)
写进cookies无效期
Response.Cookies("vote").Expires=Date+1
将已投票的选项全体纪录在cookies,用,号离隔。
Response.Cookies("vote")=","&Request.Cookies("vote")&","&Request("voteid")&","
voteid=request("voteid")
转向基础
response.redirect"vote_show.asp?voteid="&voteid
endif
%>
<%
dimvoteid
voteid=request("voteid")
setrs=conn.execute("select*fromvote,votetitlewherevotetitle.voteid="&voteid&"andvote.voteid=votetitle.voteidorderbyid")
%>
<tableborder=1cellspacing="0"style="border-collapse:collapse"cellpadding="0"bgcolor="#ffffff"bordercolor="#C0C0C0"width=100%>
<tr>
<tdcolspan="2"bgcolor="#EFEFEF">查询拜访:<%=rs("votetitle")%>(<%=rs("time")%>)</td>
</tr><formname="form1"method="post"action="vote.asp?action=vote&voteid=<%=voteid%>">
<%dowhilenotrs.eof
dimi
i=i+1%>
<tr>
<tdcolspan="2">
<inputtype="radio"name="votevalue"value="<%=rs("id")%>"<%ifi=1then%>checked<%endif%>>
<%=rs("title")%>
</td>
</tr>
<%rs.movenext
loop
rs.close
setrs=nothing%>
<tr>
<tdcolspan="2">
<%ifinstr(request.cookies("vote"),","&voteid&",")=0then%>
<inputtype="submit"name="Submit"value="Vote"></form>
<%else%>
<fontcolor="#FF0000">您已投过票了</font>
<%endif%></td>
</tr>
</table>
<br>
<ahref="vote_list.asp">检察过往投票</a><br>
<ahref="vote_show.asp?voteid=<%=voteid%>">检察本投票的了局</a>
</body>
</html>
背景办理页面admin_vote_list.asp
<!--#includefile="conn.asp"-->
<%增加办理员权限在这里,这里为了人人使用便利,我没有加考证就间接同意进进%>
<html>
<head>
<title>投票项目列表</title>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<linkhref="style.css"rel="stylesheet"type="text/css">
</head>
<body>
<%
删除模块
dimaction
action=request("action")
ifaction="del"then
DimStrSQL1,StrSQL2
StrSQL1="deletefromvotewherevoteid="&request("voteid")
conn.ExecuteStrSQL1
StrSQL2="deletefromvotetitlewherevoteid="&request("voteid")
conn.ExecuteStrSQL2
response.Redirect"?"
endif
修正模块
/////////////////////
修正表单
ifaction="add"then
%>
<tableborder=1cellspacing="0"style="border-collapse:collapse"cellpadding="0"bgcolor="#ffffff"bordercolor="#C0C0C0"width=100%>
<tr>
<tdbgcolor="#EFEFEF"><center>
增加新的投票</center></td>
</tr>
<tr>
<td>请输出这个投票所必要的选项个数。</td>
</tr>
<tr>
<td><formname="form1"method="post"action="?action=add1">
<selectname="num">
<%fori1=2to10%>
<optionvalue="<%=i1%>"><%=i1%></option>
<%next%>
</select>
<inputtype="submit"name="Submit"value="Submit">
</form></td>
</tr>
</table>
<%
endif
ifaction="add1"then
num=request("num")
%>
<tableborder=1cellspacing="0"style="border-collapse:collapse"cellpadding="0"bgcolor="#ffffff"bordercolor="#C0C0C0"width=100%>
<tr>
<tdbgcolor="#EFEFEF"><center>
增加新的投票</center></td>
</tr>
<tr>
<td>请输出这个投票所必要的具体信息。</td>
</tr>
<tr>
<td><formname="form2"method="post"action="?action=add2">
投票称号
<inputtype="text"name="votetitle">
<br>
<%fori2=1tonum%>
选项<%=i2%><inputtype="text"name="<%=i2%>"><br>
<%next%>
<inputtype="hidden"name="num"value="<%=request("num")%>">
<inputtype="submit"name="Submit2"value="Submit">
<inputtype="reset"name="Submit3"value="Reset">
</form></td>
</tr>
</table>
<%endif
ifaction="add2"then
Setrs=Server.CreateObject("ADODB.Recordset")
sql="SELECT*FROMvotetitle"
rs.Opensql,conn,1,3
rs.Addnew
rs("votetitle")=request("votetitle")
rs("time")=date()
rs.Update
rs.Close
setrs=conn.execute("selecttop1voteidfromvotetitleorderbyvoteiddesc")
voteid=rs("voteid")
rs.close
setrs=nothing
//////////////
/////////////轮回
num=request("num")
fori3=1tonum
Setrs=Server.CreateObject("ADODB.Recordset")
sql="SELECT*FROMvote"
rs.Opensql,conn,1,3
rs.Addnew
rs("title")=request(i3)
rs("voteid")=voteid
rs.Update
rs.Close
next
////////////轮回停止
Setrs=Nothing
response.Write"<ahref=admin_vote_list.asp>乐成增加,请前往</a>"
endif
修正表单停止
////////////////////
修正实行代码
修正实行代码停止
%>
<%ifaction=""then
setrs=conn.execute("select*fromvotetitleorderbyvoteiddesc")
%>
<tableborder=1cellspacing="0"style="border-collapse:collapse"cellpadding="0"bgcolor="#ffffff"bordercolor="#C0C0C0"width=100%>
<tr>
<tdcolspan="2"bgcolor="#EFEFEF">一切投票列表</td>
</tr>
<%dowhilenotrs.eof%>
<tr>
<tdwidth="44%">编号:<fontcolor="#FF0000"><%=rs("voteid")%></font><ahref="vote.asp?voteid=<%=rs("voteid")%>"target="_blank"><%=rs("votetitle")%>
</a>(<%=rs("time")%>)</td>
<tdwidth="50%">【<ahref="?action=del&voteid=<%=rs("voteid")%>">删除</a>】</td>
</tr>
<%rs.movenext
loop
rs.close
setrs=nothing%>
<tr>
<tdcolspan="2">【<ahref="?action=add">增加一个新的投票查询拜访项目</a>】</td>
</tr>
</table>
</body>
</html>
<%endif%>
最初显现效果以下:





缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。
莫相离 该用户已被删除
沙发
发表于 2015-1-19 15:56:48 | 只看该作者
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
分手快乐 该用户已被删除
板凳
发表于 2015-1-27 21:24:50 | 只看该作者
Session:这个存储跟客户端会话过程的数据,默认20分钟失效
小魔女 该用户已被删除
地板
发表于 2015-2-11 19:54:38 | 只看该作者
用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
爱飞 该用户已被删除
5#
发表于 2015-3-2 18:10:21 | 只看该作者
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
谁可相欹 该用户已被删除
6#
发表于 2015-3-11 05:26:49 | 只看该作者
完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
柔情似水 该用户已被删除
7#
发表于 2015-3-25 03:05:58 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-10 05:13

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表