Hace unos meses, vi un artículo escrito por un internauta lshdic usando JS + VML "Un programa completo para crear un gráfico de votación en columnas tridimensional usando Vml".
Creo que este método es muy bueno. Puede generar gráficos estadísticos sin usar imágenes. Ahora implementemos este programa usando ASP.
Preparación: utilice ACCESS para crear una base de datos MDB denominada vote.mdb y cree las dos tablas siguientes en la base de datos:
Luego creamos el archivo conn.asp que se conecta a la base de datos según la convención de desarrollo ASP.
<%
'conn.asp
Establecer conexión=Server.CreateObject("ADODB.Connection")
conn.Open "driver={Controlador de Microsoft Access (*.mdb)};dbq="& Server.MapPath("vote.mdb")
%>
Mostrar la lista de proyectos de votación, porque lo que queremos hacer es un sistema de votación de múltiples proyectos vote_list.asp
<!--#include file="conn.asp"-->
<html>
<cabeza>
<title>Lista de elementos de votación</title>
<meta http-equiv="Tipo de contenido" content="text/html; charset=gb2312">
<enlace href="../images/main.css" rel="hoja de estilo" tipo="texto/css">
</cabeza>
<%
set rs=conn.execute("seleccione * del orden del título de votación por desc del ID de votación")
%>
<table border=1 cellpacing="0" style="border-collapse: colapso" cellpadding="0" bgcolor="#ffffff" bordercolor="#000000" ancho=100%>
<tr>
<td bgcolor="#EFEFEF">Todas las listas de votación</td>
</tr>
<%hacer mientras no rs.eof%>
<tr>
<td>Número:<font color="#FF0000"><%=rs("voteid")%> </font><a href="vote.asp?voteid=<%=rs("voteid" )%>" target="_blank"><%=rs("votetitle")%>
</a>(<%=rs("tiempo")%>)</td>
</tr>
<%rs.movenext
bucle
rs.cerrar
establecer rs=nada%>
</tabla>
</cuerpo>
</html>
Página de visualización de votos vote_show.asp
<%si solicitud("voteid")="" entonces
Response.write "El parámetro no fue especificado."
respuesta.Fin()
terminar si%>
<!--#include file="conn.asp"-->
<html>
<cabeza>
<título>Ver resultados</título>
<meta http-equiv="Tipo de contenido" content="text/html; charset=gb2312">
<ESTILO>
td{tamaño de fuente:12px}
cuerpo {tamaño de fuente: 12px}
v:*{behavior:url(#default#VML);} //v se declara aquí como una variable pública VML
</ESTILO>
<enlace href="../images/main.css" rel="hoja de estilo" tipo="texto/css">
</cabeza>
<%
voto débil
ID de voto=solicitud("ID de voto")
set rs=conn.execute("seleccione el recuento de la votación,votetitle donde votetitle.voteid="&voteid&" y vote.voteid=votetitle.voteid ordene por id")
iii=0
hacer mientras no rs.eof
ii=ii+1
si ii=1 entonces
ceocio=trim(rs("cuenta"))
ceocio1=trim("array1["&iii&"]")
demás
ceocio=trim(ceocio&","&rs("cuenta"))
ceocio1=recortar(ceocio1&"+array1["&iii&"]")
terminar si
iii=iii+1
rs.movenext
bucle
rs.cerrar
establecer rs = nada
'respuesta.escribir ii
'respuesta.escribir ceocio1
%>
<guión>
array1=new Array(<%=ceocio%>) //Diferentes números de votación
allstr=<%=ceocio1%>
//alerta(allstr)
//allstr=array1[0]+array1[1]+array1[2]+array1[3]+array1[4]+array1[5] //Obtener el número total
para(i=0;i<=<%=(ii-1)%>;i++){
mathstr=Math.round(100/(allstr/array1[i])) //Encontrar el porcentaje, 100/(sum/single)
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 Depth='15pt' on='true'/></v:rect>")
}
</script>
<%
ID de voto=solicitud("ID de voto")
set rs=conn.execute("seleccione * de la votación,votetitle donde votetitle.voteid="&voteid&" y vote.voteid=votetitle.voteid ordene por id")
%>
<table border=1 cellpacing="0" style="border-collapse: colapso" cellpadding="2" bgcolor="#ffffff" bordercolor="#000000" ancho=100%>
<tr>
<td bgcolor="#EFEFEF">Encontrar resultados sobre:<font color="#FF0000"><%=rs("votetitle")%></font>:<br>
Un total de<b><font color="#FF0000"><%=rs("total")%></font></b> participaron en la encuesta<br>
(<%=rs("hora")%>a<%=fecha%>)</td>
</tr>
<%hacer mientras no sea rs.eof
dimí
yo=yo+1%>
<tr>
<td>Opción<%=i%>:<%=rs("title")%> <font color="#FF0000"><%=rs("count")%>Personas< /font></td>
</tr>
<%rs.movenext
bucle
rs.cerrar
establecer rs=nada%>
<tr>
<td> </td>
</tr>
</tabla>
<br>
<a href="vote_list.asp">Ver votos anteriores</a> <br>
<a href="vote.asp?voteid=<%=request("voteid")%>">Vota por este proyecto</a>
</cuerpo>
</html>
voto.asp
<!--#include file="conn.asp"-->
<%si solicitud("voteid")="" entonces
set rs=conn.execute("seleccione el 1 ID de voto principal del orden del título de voto por ID de voto desc")
ID de voto=rs("ID de voto")
rs.cerrar
establecer rs = nada
demás
ID de voto=solicitud("ID de voto")
terminar si%>
<html>
<cabeza>
<título>Documento sin título</título>
<meta http-equiv="Tipo de contenido" content="text/html; charset=gb2312">
<enlace href="estilo.css" rel="hoja de estilo" tipo="texto/css">
</cabeza>
<cuerpo>
<%
si solicitud("acción")="votar" entonces
'Agregar ","&request("voteid")","para no confundir el voto con id 1 y el voto con id 11
si instr(request.cookies("voto"),","&request("voteid")&",")=0 entonces
demás
respuesta.escribir "Ya has votado"
respuesta.fin
terminar si
sql="actualizar [voto] establecer recuento=recuento+1 donde id="&request("valor de voto")
conexión.ejecutar(sql)
sql="actualizar [título de voto] establecer total=total+1 donde ID de voto="&request("ID de voto")
conexión.ejecutar(sql)
'Escribir periodo de validez de la cookie
Respuesta.Cookies("votar").Expires=Fecha+1
'Registra todas las opciones votadas en cookies, separadas por ','.
Response.Cookies("voto")=","&Request.Cookies("voto")&","&Request("voteid")&","
ID de voto=solicitud("ID de voto")
'Ir a lo básico
respuesta.redirect "vote_show.asp?voteid="&voteid
terminar si
%>
<%
'voto débil
'idvoto=solicitud("idvoto")
set rs=conn.execute("seleccione * de la votación,votetitle donde votetitle.voteid="&voteid&" y vote.voteid=votetitle.voteid ordene por id")
%>
<table border=1 cellpacing="0" style="border-collapse: colapso" cellpadding="0" bgcolor="#ffffff" bordercolor="#C0C0C0" ancho=100%>
<tr>
<td colspan="2" bgcolor="#EFEFEF">Investigación: <%=rs("votetitle")%>(<%=rs("time")%>)</td>
</tr><form name="form1" método="post" action="vote.asp?action=vote&voteid=<%=voteid%>">
<%hacer mientras no sea rs.eof
dimí
yo=yo+1%>
<tr>
<tdcolspan="2">
<input type="radio" name="votevalue" value="<%=rs("id")%>" <%if i=1 then%>marcado<%end if%>>
<%=rs("título")%>
</td>
</tr>
<%rs.movenext
bucle
rs.cerrar
establecer rs=nada%>
<tr>
<tdcolspan="2">
<%if instr(request.cookies("votar"),","&voteid&",")=0 entonces%>
<tipo de entrada="enviar" nombre="Enviar" valor="Votar"></formulario>
<% más%>
<font color="#FF0000">Ya has votado</font>
<%finalizar%></td>
</tr>
</tabla>
<br>
<a href="vote_list.asp">Ver votos anteriores</a> <br>
<a href="vote_show.asp?voteid=<%=voteid%>">Ver los resultados de esta votación</a>
</cuerpo>
</html>
Página de administración de backend admin_vote_list.asp
<!--#include file="conn.asp"-->
<%'Agregue derechos de administrador aquí Para comodidad de todos, permitiré la entrada directamente sin verificación%>.
<html>
<cabeza>
<title>Lista de elementos de votación</title>
<meta http-equiv="Tipo de contenido" content="text/html; charset=gb2312">
<enlace href="estilo.css" rel="hoja de estilo" tipo="texto/css">
</cabeza>
<cuerpo>
<%
'Eliminar módulo
acción tenue
acción=solicitud("acción")
si acción = "del" entonces
DimStrSQL1,StrSQL2
StrSQL1="eliminar de la votación donde voteid="&request("voteid")
conexión.Ejecutar StrSQL1
StrSQL2="eliminar del título de votación donde ID de voto="&request("ID de voto")
conexión.Ejecutar StrSQL2
respuesta.Redireccionar "?"
terminar si
'Modificar módulo
'////////////////////////
'Modificar formulario
si acción = "agregar" entonces
%>
<table border=1 cellpacing="0" style="border-collapse: colapso" cellpadding="0" bgcolor="#ffffff" bordercolor="#C0C0C0" ancho=100%>
<tr>
<td bgcolor="#EFEFEF"><centro>
Agregar nueva encuesta</center></td>
</tr>
<tr>
<td>Ingrese el número de opciones requeridas para esta encuesta. </td>
</tr>
<tr>
<td><nombre del formulario="form1" método="post" action="?action=add1">
<seleccione nombre="núm">
<%para i1=2 a 10%>
<opción valor="<%=i1%>"><%=i1%></opción>
<%siguiente%>
</seleccionar>
<tipo de entrada="enviar" nombre="Enviar" valor="Enviar">
</form></td>
</tr>
</tabla>
<%
terminar si
si acción = "agregar1" entonces
número=solicitud("número")
%>
<table border=1 cellpacing="0" style="border-collapse: colapso" cellpadding="0" bgcolor="#ffffff" bordercolor="#C0C0C0" ancho=100%>
<tr>
<td bgcolor="#EFEFEF"><centro>
Agregar nueva encuesta</center></td>
</tr>
<tr>
<td>Ingrese los detalles requeridos para esta encuesta. </td>
</tr>
<tr>
<td><nombre del formulario="form2" método="post" action="?action=add2">
nombre de votación
<tipo de entrada="texto" nombre="título de voto">
<br>
<%para i2=1 a núm%>
Opciones<%=i2%><tipo de entrada="text" name="<%=i2%>"><br>
<%siguiente%>
<tipo de entrada="oculto" nombre="num" valor="<%=request("num")%>">
<tipo de entrada="enviar" nombre="Enviar2" valor="Enviar">
<tipo de entrada="reiniciar" nombre="Enviar3" valor="Reiniciar">
</form></td>
</tr>
</table>
<%end si
si acción = "agregar2" entonces
Establecer rs=Server.CreateObject("ADODB.Recordset")
sql="SELECCIONAR * DESDE título de voto"
rs.Abrir sql,conn,1,3
rs.Añadirnuevo
rs("título de voto")=request("título de voto")
rs("hora")=fecha()
rs.Actualizar
rs.Cerrar
set rs=conn.execute("seleccione el 1 ID de voto principal del orden del título de voto por ID de voto desc")
ID de voto=rs("ID de voto")
rs.cerrar
establecer rs = nada
'////////////////
'/////////////ciclo
número=solicitud("número")
para i3=1 a núm
Establecer rs=Server.CreateObject("ADODB.Recordset")
sql="SELECCIONAR * DE votar"
rs.Abrir sql,conn,1,3
rs.Añadirnuevo
rs("título")=solicitud(i3)
rs("idvoto")=idvoto
rs.Actualizar
rs.Cerrar
próximo
'/////////////Fin del bucle
Establecer rs=Nada
respuesta.Escribir "<a href=admin_vote_list.asp>Añadido correctamente, por favor regrese</a>"
terminar si
'Fin del formulario de modificación
'///////////////////////
'Modificar el código de ejecución
'Fin de la modificación del código de ejecución
%>
<%si acción="" entonces
set rs=conn.execute("seleccione * del orden del título de votación por desc del ID de votación")
%>
<table border=1 cellpacing="0" style="border-collapse: colapso" cellpadding="0" bgcolor="#ffffff" bordercolor="#C0C0C0" ancho=100%>
<tr>
<td colspan="2" bgcolor="#EFEFEF">Todas las listas de votación</td>
</tr>
<%hacer mientras no rs.eof%>
<tr>
<td width="44%">Número: <font color="#FF0000"><%=rs("voteid")%></font><a href="vote.asp?voteid=<% =rs("voteid")%>" target="_blank"><%=rs("votetitle")%>
</a>(<%=rs("tiempo")%>)</td>
<td width="50%">【<a href="?action=del&voteid=<%=rs("voteid")%>">Eliminar</a>】</td>
</tr>
<%rs.movenext
bucle
rs.cerrar
establecer rs=nada%>
<tr>
<td colspan="2">[<a href="?action=add">Agregar una nueva encuesta</a>]</td>
</tr>
</tabla>
</cuerpo>
</html>
<%end if%>
El efecto de visualización final es el siguiente: