เมื่อไม่กี่เดือนที่ผ่านมา ฉันเห็นบทความที่เขียนโดยชาวเน็ต lshdic โดยใช้ JS+VML "โปรแกรมที่สมบูรณ์เพื่อสร้างแผนภูมิการลงคะแนนแบบเรียงเป็นแนวสามมิติโดยใช้ Vml"
ฉันคิดว่าวิธีนี้ดีมาก มันสามารถสร้างแผนภูมิทางสถิติได้โดยไม่ต้องใช้รูปภาพ
การเตรียมการ: ใช้ ACCESS เพื่อสร้างฐานข้อมูล MDB ชื่อ vote.mdb และสร้างตารางสองตารางต่อไปนี้ในฐานข้อมูล:
จากนั้นเราสร้างไฟล์ conn.asp ที่เชื่อมต่อกับฐานข้อมูลตามแบบแผนของการพัฒนา ASP
-
'conn.asp
ตั้งค่า conn=Server.CreateObject("ADODB.Connection")
conn.Open "driver={ไดรเวอร์ Microsoft Access (*.mdb)};dbq="& Server.MapPath("vote.mdb")
%>
แสดงรายการโครงการลงคะแนนเสียง เนื่องจากสิ่งที่เราต้องการทำคือระบบการลงคะแนนแบบหลายโครงการ vote_list.asp
<!--#include file="conn.asp"-->
<html>
<หัว>
<title>รายการโหวต</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="../images/main.css" rel="stylesheet" type="text/css">
</หัว>
-
set rs=conn.execute("select * from votetitle order by voteid desc")
-
<table border=1 cellspacing="0" style="border-collapse:ยุบ" cellpadding="0" bgcolor="#ffffff" bordercolor="#000000" width=100%>
<tr>
<td bgcolor="#EFEFEF">รายการลงคะแนนทั้งหมด</td>
</tr>
<%ทำในขณะที่ไม่ใช่ rs.eof%>
<tr>
<td>หมายเลข:<font color="#FF0000"><%=rs("voteid")%> </font><a href="vote.asp?voteid=<%=rs("voteid" )%>" target="_blank"><%=rs("โหวต")%>
</a>(<%=rs("เวลา")%>)</td>
</tr>
<%rs.movenext
วนซ้ำ
฿.ปิด
ตั้งค่า rs=nothing%>
</ตาราง>
</ร่างกาย>
</html>
หน้าแสดงการลงคะแนนเสียง vote_show.asp
<%if request("voteid")="" แล้ว
response.write "ไม่ได้ระบุพารามิเตอร์"
การตอบสนองสิ้นสุด()
สิ้นสุดถ้า%>
<!--#include file="conn.asp"-->
<html>
<หัว>
<title>ดูผลลัพธ์</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<สไตล์>
td{ขนาดตัวอักษร:12px}
เนื้อความ{font-size:12px}
v:*{behavior:url(#default#VML);} //v ถูกประกาศที่นี่เป็นตัวแปรสาธารณะ VML
</สไตล์>
<link href="../images/main.css" rel="stylesheet" type="text/css">
</หัว>
-
โหวตไม่มาก
voteid=request("โหวต")
set rs=conn.execute("เลือกนับจากการโหวต,votetitle โดยที่ votetitle.voteid="&voteid&" และ vote.voteid=votetitle.voteid เรียงลำดับตาม id")
iii=0
ทำในขณะที่ไม่ใช่ rs.eof
ii=ii+1
ถ้า ii=1 แล้ว
ceocio=trim(rs("นับ"))
ceocio1=trim("array1["&iii&"]")
อื่น
ceocio=trim(ceocio&","&rs("นับ"))
ceocio1=trim(ceocio1&"+array1["&iii&"]")
สิ้นสุดถ้า
iii=iii+1
rs.movenext
วนซ้ำ
฿.ปิด
ตั้งค่า rs=nothing
'response.write ii
'response.write ceocio1.'
-
<สคริปต์>
array1=new Array(<%=ceocio%>) //หมายเลขการลงคะแนนต่างกัน
allstr=<%=ceocio1%>
// แจ้งเตือน (allstr)
//allstr=array1[0]+array1[1]+array1[2]+array1[3]+array1[4]+array1[5] // รับจำนวนทั้งหมด
สำหรับ(i=0;i<=<%=(ii-1)%>;i++){
mathstr=Math.round(100/(allstr/array1[i])) // ค้นหาเปอร์เซ็นต์, 100/(ผลรวม/เดี่ยว)
document.write ("<v:rect fillcolor='lime' style='width:20;color:navy;height:"+500*<%=(ii-1)%>/(1000/mathstr)+"' <br> %"+mathstr+"<br>"+array1[i]+"人<v:Extrusion back allowance='15pt' on='true'/></v:rect>")
-
</สคริปต์>
-
voteid=request("โหวต")
set rs=conn.execute("select * from vote,votetitle โดยที่ votetitle.voteid="&voteid&" และ vote.voteid=votetitle.voteid เรียงลำดับตาม id")
-
<table border=1 cellspacing="0" style="border-collapse:ยุบ" cellpadding="2" bgcolor="#ffffff" bordercolor="#000000" width=100%>
<tr>
<td bgcolor="#EFEFEF">การค้นหาผลลัพธ์เกี่ยวกับ:<font color="#FF0000"><%=rs("votetitle")%></font>:<br>
ทั้งหมด<b><font color="#FF0000"><%=rs("total")%></font></b> เข้าร่วมการสำรวจ<br>
(<%=rs("เวลา")%>ถึง<%=date%>)</td>
</tr>
<% ทำในขณะที่ไม่ใช่ rs.eof
ดิมิ
i=i+1%>
<tr>
<td>ตัวเลือก<%=i%>:<%=rs("title")%> <font color="#FF0000"><%=rs("count")%>ผู้คน< /แบบอักษร></td>
</tr>
<%rs.movenext
วนซ้ำ
฿.ปิด
ตั้งค่า rs=nothing%>
<tr>
<td> </td>
</tr>
</ตาราง>
<br>
<a href="vote_list.asp">ดูคะแนนโหวตที่ผ่านมา</a> <br>
<a href="vote.asp?voteid=<%=request("voteid")%>">โหวตให้กับโครงการนี้</a>
</ร่างกาย>
</html>
โหวต.asp
<!--#include file="conn.asp"-->
<%if request("voteid")="" แล้ว
set rs=conn.execute("เลือก 1 อันดับแรกที่โหวตจากลำดับชื่อโหวตโดย voteid desc")
โหวต=rs("โหวต")
฿.ปิด
ตั้งค่า rs=nothing
อื่น
voteid=request("โหวต")
สิ้นสุดถ้า%>
<html>
<หัว>
<title>เอกสารที่ไม่มีชื่อ</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="style.css" rel="stylesheet" type="text/css">
</หัว>
<ร่างกาย>
-
ถ้า request("action")="vote" แล้ว
'เพิ่ม ","&request("voteid")"," เพื่อไม่ให้สับสนการโหวตด้วย id 1 และการโหวตด้วย id 11
ถ้า instr(request.cookies("vote"),","&request("voteid")&",")=0 แล้ว
อื่น
response.write "คุณได้โหวตแล้ว"
การตอบสนองสิ้นสุด
สิ้นสุดถ้า
sql = "อัปเดต [โหวต] set count=count+1 โดยที่ id = "&request ("votevalue")
conn.execute(sql)
sql="update [votetitle] set Total=total+1 โดยที่ voteid="&request("voteid")
conn.execute(sql)
'เขียนระยะเวลาการใช้งานคุกกี้
Response.Cookies("โหวต").Expires=Date+1
'บันทึกตัวเลือกที่โหวตทั้งหมดไว้ในคุกกี้ คั่นด้วย ','
Response.Cookies("โหวต")=","&Request.Cookies("โหวต")&","&ร้องขอ("โหวต")&","
voteid=request("โหวต")
'ไปที่พื้นฐาน
response.redirect "vote_show.asp?voteid="&voteid
สิ้นสุดถ้า
-
-
'โหวตไม่ชัด'
'โหวต=คำขอ("โหวต")
set rs=conn.execute("select * from vote,votetitle โดยที่ votetitle.voteid="&voteid&" และ vote.voteid=votetitle.voteid เรียงลำดับตาม id")
-
<table border=1 cellspacing="0" style="border-collapse:ยุบ" cellpadding="0" bgcolor="#ffffff" bordercolor="#C0C0C0" width=100%>
<tr>
<td colspan="2" bgcolor="#EFEFEF">การตรวจสอบ: <%=rs("votetitle")%>(<%=rs("time")%>)</td>
</tr><form name="form1" method="post" action="vote.asp?action=vote&voteid=<%=voteid%>">
<% ทำในขณะที่ไม่ใช่ rs.eof
ดิมิ
i=i+1%>
<tr>
<td colspan="2">
<input type="radio" name="votevalue" value="<%=rs("id")%>" <%if i=1 แล้ว%>ตรวจสอบแล้ว<%end if%>>
<%=rs("หัวข้อ")%>
</td>
</tr>
<%rs.movenext
วนซ้ำ
฿.ปิด
ตั้งค่า rs=nothing%>
<tr>
<td colspan="2">
<%if instr(request.cookies("vote"),","&voteid&",")=0 แล้วก็%>
<input type="submit" name="Submit" value="Vote"></form>
<%อื่น%>
<font color="#FF0000">คุณได้โหวตแล้ว</font>
<%สิ้นสุดถ้า%></td>
</tr>
</ตาราง>
<br>
<a href="vote_list.asp">ดูคะแนนโหวตที่ผ่านมา</a> <br>
<a href="vote_show.asp?voteid=<%=voteid%>">ดูผลการโหวตนี้</a>
</ร่างกาย>
</html>
หน้าการจัดการแบ็กเอนด์ admin_vote_list.asp
<!--#include file="conn.asp"-->
<%'เพิ่มสิทธิ์ของผู้ดูแลระบบที่นี่ เพื่อความสะดวกของทุกคน ฉันจะอนุญาตให้เข้าโดยตรงโดยไม่ต้องยืนยัน%>
<html>
<หัว>
<title>รายการโหวต</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="style.css" rel="stylesheet" type="text/css">
</หัว>
<ร่างกาย>
-
'ลบโมดูล
การกระทำที่สลัว
การกระทำ = คำขอ ("การกระทำ")
ถ้า action="del" แล้ว
DimStrSQL1,StrSQL2
StrSQL1="ลบจากการโหวต โดยที่ voteid="&request("voteid")
conn.ดำเนินการ StrSQL1
StrSQL2="ลบออกจาก votetitle โดยที่ voteid="&request("voteid")
conn.ดำเนินการ StrSQL2
การตอบสนองเปลี่ยนเส้นทาง "?"
สิ้นสุดถ้า
'แก้ไขโมดูล
-
'แก้ไขแบบฟอร์ม
ถ้า action="เพิ่ม" แล้ว
-
<table border=1 cellspacing="0" style="border-collapse:ยุบ" cellpadding="0" bgcolor="#ffffff" bordercolor="#C0C0C0" width=100%>
<tr>
<td bgcolor="#EFEFEF"><center>
เพิ่มแบบสำรวจใหม่</center></td>
</tr>
<tr>
<td>โปรดป้อนจำนวนตัวเลือกที่จำเป็นสำหรับการสำรวจความคิดเห็นนี้ </td>
</tr>
<tr>
<td><form name="form1" method="post" action="?action=add1">
<เลือกชื่อ = "หมายเลข">
<%สำหรับ i1=2 ถึง 10%>
<option value="<%=i1%>"><%=i1%></option>
<%ถัดไป%>
</เลือก>
<input type="submit" name="Submit" value="Submit">
</รูปแบบ></td>
</tr>
</ตาราง>
-
สิ้นสุดถ้า
ถ้า action="add1" แล้ว
num=request("num")
-
<table border=1 cellspacing="0" style="border-collapse:ยุบ" cellpadding="0" bgcolor="#ffffff" bordercolor="#C0C0C0" width=100%>
<tr>
<td bgcolor="#EFEFEF"><center>
เพิ่มแบบสำรวจใหม่</center></td>
</tr>
<tr>
<td>โปรดป้อนรายละเอียดที่จำเป็นสำหรับการสำรวจความคิดเห็นนี้ </td>
</tr>
<tr>
<td><form name="form2" method="post" action="?action=add2">
ชื่อการลงคะแนนเสียง
<input type="text" name="votetitle">
<br>
<%สำหรับ i2=1 ถึง num%>
ตัวเลือก<%=i2%><input type="text" name="<%=i2%>"><br>
<%ถัดไป%>
<input type="hidden" name="num" value="<%=request("num")%>">
<input type="submit" name="Submit2" value="Submit">
<input type="reset" name="Submit3" value="Reset">
</รูปแบบ></td>
</tr>
</table>
<%สิ้นสุดถ้า
ถ้า action="add2" แล้ว
ตั้งค่า rs=Server.CreateObject("ADODB.Recordset")
sql = "เลือก * จากชื่อโหวต"
rs.เปิด sql,conn,1,3
rs.เพิ่มใหม่
rs("ผู้มีสิทธิเลือกตั้ง")=คำขอ("ผู้มีสิทธิเลือกตั้ง")
อาร์เอส("เวลา")=วันที่()
อาร์เอสอัปเดต
rs.ปิด
set rs=conn.execute("เลือก 1 อันดับแรกที่โหวตจากลำดับชื่อโหวตโดย voteid desc")
โหวต=rs("โหวต")
฿.ปิด
ตั้งค่า rs=nothing
-
'///////////////รอบ
num=request("num")
สำหรับ i3=1 ถึง num
ตั้งค่า rs=Server.CreateObject("ADODB.Recordset")
sql = "เลือก * จากการโหวต"
rs.เปิด sql,conn,1,3
rs.เพิ่มใหม่
rs("หัวข้อ")=คำขอ(i3)
rs("โหวตid")=โหวตid
อาร์เอสอัปเดต
rs.ปิด
ต่อไป
'//////////// จบการวนซ้ำ'
ตั้งค่า rs=ไม่มีอะไร
response.Write "<a href=admin_vote_list.asp>เพิ่มเรียบร้อยแล้ว โปรดส่งคืน</a>"
สิ้นสุดถ้า
'สิ้นสุดการแก้ไขแบบฟอร์ม
-
'แก้ไขรหัสการดำเนินการ
'สิ้นสุดการแก้ไขโค้ดดำเนินการ
%>
<% ถ้าการกระทำ = "" แล้ว
set rs=conn.execute("select * from votetitle order by voteid desc")
-
<table border=1 cellspacing="0" style="border-collapse:ยุบ" cellpadding="0" bgcolor="#ffffff" bordercolor="#C0C0C0" width=100%>
<tr>
<td colspan="2" bgcolor="#EFEFEF">รายการลงคะแนนทั้งหมด</td>
</tr>
<%ทำในขณะที่ไม่ใช่ rs.eof%>
<tr>
<td width="44%">หมายเลข: <font color="#FF0000"><%=rs("voteid")%> </font><a href="vote.asp?voteid=<% =rs("โหวต")%>" target="_blank"><%=rs("โหวต")%>
</a>(<%=rs("เวลา")%>)</td>
<td width="50%">【<a href="?action=del&voteid=<%=rs("voteid")%>">ลบ</a>】</td>
</tr>
<%rs.movenext
วนซ้ำ
฿.ปิด
ตั้งค่า rs=nothing%>
<tr>
<td colspan="2">[<a href="?action=add">เพิ่มการสำรวจใหม่</a>]</td>
</tr>
</ตาราง>
</ร่างกาย>
</html>
<%end if%>
เอฟเฟกต์การแสดงผลสุดท้ายจะเป็นดังนี้: