قبل بضعة أشهر، رأيت مقالًا كتبه أحد مستخدمي الإنترنت باستخدام JS+VML بعنوان "برنامج كامل لإنشاء مخطط تصويت عمودي ثلاثي الأبعاد باستخدام Vml".
أعتقد أن هذه الطريقة جيدة جدًا ويمكنها إنشاء مخططات إحصائية دون استخدام الصور.
الإعداد: استخدم ACCESS لإنشاء قاعدة بيانات MDB باسم voice.mdb، وقم بإنشاء الجدولين التاليين في قاعدة البيانات:
ثم نقوم بإنشاء الملف conn.asp الذي يتصل بقاعدة البيانات وفقًا لاتفاقية تطوير ASP.
<%
'conn.asp
تعيين conn=Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("vote.mdb")
%>
عرض قائمة مشاريع التصويت، لأن ما نريد أن نفعله هو نظام تصويت متعدد المشاريع Vot_list.asp
<!--#include file="conn.asp"-->
<أتش تي أم أل>
<الرأس>
<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("اختر * من ترتيب التصويت حسب ترتيب التصويت")
%>
<حدود الجدول = 1 cellpacing = "0" نمط = "border-collapse: طي" cellpadding = "0" bgcolor = "#ffffff" bordercolor = "#000000" width=100%>
<تر>
<td bgcolor="#EFEFEF">جميع قوائم التصويت</td>
</tr>
<%افعل بينما لا rs.eof%>
<تر>
<td>الرقم:<font color="#FF0000"><%=rs("voteid")%> )%>" target="_blank"><%=rs("votetitle")%>
</a>(<%=rs("time")%>)</td>
</tr>
<%rs.movenext
حلقة
rs. Close
اضبط rs=لا شيء%>
</الجدول>
</الجسم>
</html>
صفحة عرض التصويت Vote_show.asp
<%if request("voteid")="" إذن
Response.write "لم يتم تحديد المعلمة."
استجابة. النهاية ()
نهاية إذا٪>
<!--#include file="conn.asp"-->
<أتش تي أم أل>
<الرأس>
<title>عرض النتائج</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<النمط>
تد {حجم الخط: 12px}
الجسم {حجم الخط: 12 بكسل}
v:*{behavior:url(#default#VML);} تم تعريف //v هنا كمتغير عام لـ VML
</ستايل>
<link href="../images/main.css" rel="stylesheet" type="text/css">
</الرأس>
<%
خافت التصويت
تصويت = طلب ("تصويت")
set rs=conn.execute("اختر العد من التصويت،votetitle حيث voicetitle.voteid="&voteid&" والتصويت.voteid=votetitle.voteid الترتيب حسب المعرف")
ج = 0
تفعل في حين لا rs.eof
الثاني=الثاني+1
إذا الثاني = 1 ثم
ceocio=trim(rs("count"))
ceocio1=trim("array1["&iii&"]")
آخر
ceocio=trim(ceocio&"،&rs("count"))
ceocio1=trim(ceocio1&"+array1["&iii&"]")
نهاية إذا
الثالث=الثالث+1
rs.movenext
حلقة
rs. Close
تعيين RS=لا شيء
'رد.اكتب ثانيا
'response.write ceocio1
%>
<النص البرمجي>
array1=new Array(<%=ceocio%>) // أرقام تصويت مختلفة
allstr=<%=ceocio1%>
// تنبيه (الستر)
//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عمق='15pt' on='true'/></v:rect>")
}
</script>
<%
تصويت = طلب ("تصويت")
set rs=conn.execute("اختر * من التصويت،votetitle حيث التصويتtitle.voteid="&voteid&" والتصويت.voteid=votetitle.voteid الترتيب حسب المعرف")
%>
<حدود الجدول = 1 cellpacing = "0" نمط = "border-collapse: طي" cellpadding = "2" bgcolor = "#ffffff" bordercolor = "#000000" width=100%>
<تر>
<td bgcolor="#EFEFEF">البحث عن نتائج حول:<font color="#FF0000"><%=rs("votetitle")%></font>:<br>
شارك إجمالي<b><font color="#FF0000"><%=rs("total")%></font></b> في الاستطلاع<br>
(<%=rs("time")%>إلى<%=date%>)</td>
</tr>
<%افعل بينما لا rs.eof
ديمي
أنا=أنا+1%>
<تر>
<td>الخيار<%=i%>:<%=rs("title")%> <font color="#FF0000"><%=rs("count")%>الأشخاص< /الخط></td>
</tr>
<%rs.movenext
حلقة
rs. Close
اضبط rs=لا شيء%>
<تر>
<td> </td>
</tr>
</الجدول>
<ر>
<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 صوتًا من ترتيب عنوان التصويت حسب تنازلي معرف الصوت")
تصويت=rs("voteid")
rs. Close
تعيين RS=لا شيء
آخر
تصويت = طلب ("تصويت")
نهاية إذا٪>
<أتش تي أم أل>
<الرأس>
<title>مستند بدون عنوان</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="style.css" rel="stylesheet" type="text/css">
</الرأس>
<الجسم>
<%
إذا كان الطلب ("الإجراء") = "التصويت" إذن
'أضف ""،"&request("voteid")"،"حتى لا يتم الخلط بين التصويت بالمعرف 1 والتصويت بالمعرف 11"
إذا كان instr(request.cookies("vote")"،"،"،"،&request("voteid")&"،)=0 ثم
آخر
رد: اكتب "لقد قمت بالتصويت بالفعل"
Response.end
نهاية إذا
sql = "تحديث [تصويت] تعيين العد = العد + 1 حيث id = "& طلب ("قيمة التصويت")
كون.تنفيذ (SQL)
sql = "تحديث [votetitle] تعيين الإجمالي = الإجمالي + 1 حيث voiceid = "&request ("voteid")
كون.تنفيذ (SQL)
'اكتب مدة صلاحية ملف تعريف الارتباط
Response.Cookies("vote").انتهاء الصلاحية=التاريخ+1
"سجل جميع الخيارات التي تم التصويت عليها في ملفات تعريف الارتباط، مفصولة بـ "،".
Response.Cookies("vote")=""&Request.Cookies("vote")&"،&Request("voteid")&"،
تصويت = طلب ("تصويت")
"اذهب إلى الأساسيات."
Response.redirect "vote_show.asp?voteid="&voteid
نهاية إذا
%>
<%
"صوت خافت."
'voteid=request("voteid")
set rs=conn.execute("اختر * من التصويت،votetitle حيث التصويتtitle.voteid="&voteid&" والتصويت.voteid=votetitle.voteid الترتيب حسب المعرف")
%>
<حدود الجدول = 1 cellpacing = "0" نمط = "border-collapse: طي" cellpadding = "0" bgcolor = "#ffffff" bordercolor = "#C0C0C0" width=100%>
<تر>
<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
ديمي
أنا=أنا+1%>
<تر>
<td كولسبان = "2">
<input type = "radio" name = "votevalue" value = "<%=rs("id")%>" <%if i=1 ثم%>تم التحديد<%end if%>>
<%=rs("title")%>
</TD>
</tr>
<%rs.movenext
حلقة
rs. Close
اضبط rs=لا شيء%>
<تر>
<td كولسبان = "2">
<%if instr(request.cookies("vote"),"،"،&voteid&"،)=0 ثم%>
<input type="submit" name="Submit" value="Vote"></form>
<%آخر%>
<font color="#FF0000">لقد قمت بالتصويت بالفعل</font>
<%end if%></td>
</tr>
</الجدول>
<ر>
<a href="vote_list.asp">عرض الأصوات السابقة</a> <br>
<a href="vote_show.asp?voteid=<%=voteid%>">عرض نتائج هذا التصويت</a>
</الجسم>
</html>
صفحة إدارة الواجهة الخلفية admin_vote_list.asp
<!--#include file="conn.asp"-->
<%'أضف حقوق المسؤول هنا لراحة الجميع، سأسمح بالدخول مباشرة دون التحقق%>
<أتش تي أم أل>
<الرأس>
<title>قائمة عناصر التصويت</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="style.css" rel="stylesheet" type="text/css">
</الرأس>
<الجسم>
<%
"حذف الوحدة النمطية."
عمل خافت
الإجراء = طلب ("الإجراء")
إذا الإجراء = "ديل" ثم
ديمسترسقل1،سترسقل2
StrSQL1="حذف من التصويت حيث تصويت ="&request("voteid")
conn. تنفيذ StrSQL1
StrSQL2 = "حذف من عنوان التصويت حيث التصويت = "& طلب ("التصويت")
conn. تنفيذ StrSQL2
استجابة.إعادة توجيه "؟"
نهاية إذا
"تعديل الوحدة النمطية."
'//////////////////////
'تعديل النموذج
إذا الإجراء = "إضافة" ثم
%>
<حدود الجدول = 1 cellpacing = "0" نمط = "border-collapse: طي" cellpadding = "0" bgcolor = "#ffffff" bordercolor = "#C0C0C0" width=100%>
<تر>
<td bgcolor="#EFEFEF"><center>
إضافة استطلاع جديد</center></td>
</tr>
<تر>
<td>الرجاء إدخال عدد الخيارات المطلوبة لهذا الاستطلاع. </TD>
</tr>
<تر>
<td><form name="form1"method="post" action="?action=add1">
<اختر الاسم = "رقم">
<%for i1=2 إلى 10%>
<قيمة الخيار = "<%=i1%>"><%=i1%></option>
<%التالي%>
</حدد>
<نوع الإدخال = "إرسال" الاسم = "إرسال" القيمة = "إرسال">
</form></td>
</tr>
</الجدول>
<%
نهاية إذا
إذا الإجراء = "add1" ثم
الأعداد = طلب ("الأعداد")
%>
<حدود الجدول = 1 cellpacing = "0" نمط = "border-collapse: طي" cellpadding = "0" bgcolor = "#ffffff" bordercolor = "#C0C0C0" width=100%>
<تر>
<td bgcolor="#EFEFEF"><center>
إضافة استطلاع جديد</center></td>
</tr>
<تر>
<td>الرجاء إدخال التفاصيل المطلوبة لهذا الاستطلاع. </TD>
</tr>
<تر>
<td><form name="form2"method="post" action="?action=add2">
اسم التصويت
<نوع الإدخال = "نص" اسم = "التصويت">
<ر>
<%for i2=1 إلى num%>
الخيارات<%=i2%><input type="text" name="<%=i2%>"><br>
<%التالي%>
<input type = "hidden" name = "num" value = "<%=request("num")%>">
<نوع الإدخال = "إرسال" الاسم = "إرسال 2" القيمة = "إرسال">
<نوع الإدخال = "إعادة تعيين" اسم = "إرسال 3" القيمة = "إعادة تعيين">
</form></td>
</tr>
</table>
<%end if
إذا الإجراء = "add2" ثم
تعيين rs=Server.CreateObject("ADODB.Recordset")
sql="حدد * من عنوان التصويت"
rs.Open SQL، كون، 1،3
rs.Addnew
rs("votetitle")=request("votetitle")
rs("الوقت")=التاريخ()
تحديث
إغلاق
set rs=conn.execute("حدد أعلى 1 صوتًا من ترتيب عنوان التصويت حسب تنازلي معرف الصوت")
تصويت=rs("voteid")
rs. Close
تعيين RS=لا شيء
'///////////////
'/////////////دورة
الأعداد = طلب ("الأعداد")
لi3=1 إلى الأعداد
تعيين rs=Server.CreateObject("ADODB.Recordset")
sql="اختر * من التصويت"
rs.Open SQL، كون، 1،3
rs.Addnew
rs("العنوان")=الطلب(i3)
rs("voteid")=voteid
تحديث
إغلاق
التالي
'////////////نهاية الحلقة
تعيين RS = لا شيء
Response.اكتب "<a href=admin_vote_list.asp>تمت الإضافة بنجاح، يرجى العودة</a>"
نهاية إذا
"نهاية نموذج التعديل."
'////////////////////
'تعديل رمز التنفيذ
'نهاية تعديل كود التنفيذ
%>
<%if action = "" إذن
set rs=conn.execute("اختر * من ترتيب التصويت حسب ترتيب التصويت")
%>
<حدود الجدول = 1 cellpacing = "0" نمط = "border-collapse: طي" cellpadding = "0" bgcolor = "#ffffff" bordercolor = "#C0C0C0" width=100%>
<تر>
<td colspan="2" bgcolor="#EFEFEF">جميع قوائم التصويت</td>
</tr>
<%افعل بينما لا rs.eof%>
<تر>
<td width="44%">الرقم: <font color="#FF0000"><%=rs("voteid")%> =rs("voteid")%>" target="_blank"><%=rs("votetitle")%>
</a>(<%=rs("time")%>)</td>
<td width="50%">【<a href="?action=del&voteid=<%=rs("voteid")%>">حذف</a>】</td>
</tr>
<%rs.movenext
حلقة
rs. Close
اضبط rs=لا شيء%>
<تر>
<td colspan="2">[<a href="?action=add">إضافة استطلاع جديد</a>]</td>
</tr>
</الجدول>
</الجسم>
</html>
<%end if%>
يكون تأثير العرض النهائي كما يلي: