Il y a quelques mois, j'ai vu un article écrit par un internaute lshdic utilisant JS+VML "Un programme complet pour créer un tableau de vote en colonnes tridimensionnelles en utilisant Vml".
Je pense que cette méthode est très bonne. Elle peut générer des graphiques statistiques sans utiliser d'images. Implémentons maintenant ce programme en utilisant ASP.
Préparation : utilisez ACCESS pour créer une base de données MDB nommée vote.mdb et créez les deux tables suivantes dans la base de données :
Ensuite nous créons le fichier conn.asp qui se connecte à la base de données selon la convention de développement ASP.
<%
'conn.asp
Définir conn=Server.CreateObject("ADODB.Connection")
conn.Open "driver={Pilote Microsoft Access (*.mdb)};dbq="& Server.MapPath("vote.mdb")
%>
Afficher la liste des projets votants, car ce que nous voulons faire, c'est un système de vote multi-projets vote_list.asp
<!--#include file="conn.asp"-->
<html>
<tête>
<title>Liste des éléments de vote</title>
<méta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="../images/main.css" rel="stylesheet" type="text/css">
</tête>
<%
set rs=conn.execute("select * from votetitle order by voteid desc")
%>
<table border=1 cellpacing="0" style="border-collapse:effondrement" cellpadding="0" bgcolor="#ffffff" bordercolor="#000000" width=100%>
<tr>
<td bgcolor="#EFEFEF">Toutes les listes de vote</td>
</tr>
<%do while not rs.eof%>
<tr>
<td>Numéro :<font color="#FF0000"><%=rs("voteid")%> </font><a href="vote.asp?voteid=<%=rs("voteid" )%>" target="_blank"><%=rs("votetitle")%>
</a>(<%=rs("time")%>)</td>
</tr>
<%rs.movenext
boucle
rs.fermer
définir rs=rien%>
</table>
</corps>
</html>
Page d'affichage des votes vote_show.asp
<%if request("voteid")="" alors
réponse.write "Le paramètre n'a pas été spécifié."
réponse.Fin()
terminer si%>
<!--#include file="conn.asp"-->
<html>
<tête>
<title>Afficher les résultats</title>
<méta http-equiv="Content-Type" content="text/html; charset=gb2312">
<STYLE>
td{taille de police : 12px}
corps{font-size:12px}
v:*{behavior:url(#default#VML);} //v est déclaré ici comme variable publique VML
</STYLE>
<link href="../images/main.css" rel="stylesheet" type="text/css">
</tête>
<%
faible identifiant de vote
id de vote=request("id de vote")
set rs=conn.execute("sélectionnez le nombre de votes, votetitle où votetitle.voteid="&voteid&" et vote.voteid=votetitle.voteid ordre par identifiant")
iii=0
faire sans rs.eof
ii=ii+1
si ii=1 alors
ceocio=trim(rs("count"))
ceocio1=trim("array1["&iii&"]")
autre
ceocio=trim(ceocio&","&rs("count"))
ceocio1=trim(ceocio1&"+array1["&iii&"]")
finir si
iii=iii+1
rs.movenext
boucle
rs.fermer
définir rs = rien
'response.write ii
'response.write ceocio1
%>
<script>
array1=new Array(<%=ceocio%>) //Différents numéros de vote
allstr=<%=ceocio1%>
// alerte (allstr)
//allstr=array1[0]+array1[1]+array1[2]+array1[3]+array1[4]+array1[5] //Obtenir le nombre total
pour(i=0;i<=<%=(ii-1)%>;i++){
mathstr=Math.round(100/(allstr/array1[i])) //Trouver le pourcentage, 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 backdegree='15pt' on='true'/></v:rect>")
}
</script>
<%
id de vote=request("id de vote")
set rs=conn.execute("select * from vote,votetitle Where votetitle.voteid="&voteid&" et vote.voteid=votetitle.voteid order by id")
%>
<table border=1 cellpacing="0" style="border-collapse:effondrement" cellpadding="2" bgcolor="#ffffff" bordercolor="#000000" width=100%>
<tr>
<td bgcolor="#EFEFEF">Recherche de résultats sur :<font color="#FF0000"><%=rs("votetitle")%></font> :<br>
Au total<b><font color="#FF0000"><%=rs("total")%></font></b> ont participé à l'enquête<br>
(<%=rs("time")%>à<%=date%>)</td>
</tr>
<%do alors que ce n'est pas rs.eof
dimi
je=i+1%>
<tr>
<td>Option<%=i%> :<%=rs("title")%> <font color="#FF0000"><%=rs("count")%>Personnes< /font></td>
</tr>
<%rs.movenext
boucle
rs.fermer
définir rs=rien%>
<tr>
<td> </td>
</tr>
</table>
<br>
<a href="vote_list.asp">Afficher les votes passés</a> <br>
<a href="vote.asp?voteid=<%=request("voteid")%>">Votez pour ce projet</a>
</corps>
</html>
vote.asp
<!--#include file="conn.asp"-->
<%if request("voteid")="" alors
set rs=conn.execute("sélectionnez le premier numéro de vote dans l'ordre des titres de vote par numéro de vote desc")
id de vote=rs("id de vote")
rs.fermer
définir rs = rien
autre
id de vote=request("id de vote")
terminer si%>
<html>
<tête>
<title>Document sans titre</title>
<méta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="style.css" rel="stylesheet" type="text/css">
</tête>
<corps>
<%
si request("action")="vote" alors
'Ajouter ","&request("voteid")","afin de ne pas confondre le vote avec l'id 1 et le vote avec l'id 11
si instr(request.cookies("vote"),","&request("voteid")&",")=0 alors
autre
réponse.écrire "Vous avez déjà voté"
réponse.end
finir si
sql="update [vote] set count=count+1 où id="&request("votevalue")
conn.execute(sql)
sql="update [votetitle] set total=total+1 où voteid="&request("voteid")
conn.execute(sql)
'Écrire la durée de validité des cookies
Response.Cookies("vote").Expires=Date+1
'Enregistrez toutes les options votées dans les cookies, séparées par ','.
Response.Cookies("vote")=","&Request.Cookies("vote")&","&Request("voteid")&","
id de vote=request("id de vote")
'Aller à l'essentiel
réponse.redirect "vote_show.asp?voteid="&voteid
finir si
%>
<%
'Dim voteid
'voteid=request("voteid")
set rs=conn.execute("select * from vote,votetitle Where votetitle.voteid="&voteid&" et vote.voteid=votetitle.voteid order by id")
%>
<table border=1 cellpacing="0" style="border-collapse: collapse" cellpadding="0" bgcolor="#ffffff" bordercolor="#C0C0C0" width=100%>
<tr>
<td colspan="2" bgcolor="#EFEFEF">Enquête : <%=rs("votetitle")%>(<%=rs("time")%>)</td>
</tr><form name="form1" method="post" action="vote.asp?action=vote&voteid=<%=voteid%>">
<%do alors que ce n'est pas rs.eof
dimi
je=i+1%>
<tr>
<td colspan="2">
<input type="radio" name="votevalue" value="<%=rs("id")%>" <%if i=1 then%>vérifié<%end if%>>
<%=rs("titre")%>
</td>
</tr>
<%rs.movenext
boucle
rs.fermer
définir rs=rien%>
<tr>
<td colspan="2">
<%if instr(request.cookies("vote"),","&voteid&",")=0 then%>
<input type="submit" name="Submit" value="Vote"></form>
<%else%>
<font color="#FF0000">Vous avez déjà voté</font>
<%end if%></td>
</tr>
</table>
<br>
<a href="vote_list.asp">Afficher les votes passés</a> <br>
<a href="vote_show.asp?voteid=<%=voteid%>">Voir les résultats de ce vote</a>
</corps>
</html>
Page de gestion du backend admin_vote_list.asp
<!--#include file="conn.asp"-->
<%'Ajouter des droits d'administrateur ici Pour le confort de tous, j'autoriserai directement l'entrée sans vérification%>
<html>
<tête>
<title>Liste des éléments de vote</title>
<méta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="style.css" rel="stylesheet" type="text/css">
</tête>
<corps>
<%
'Supprimer le module
action sombre
action=requête("action")
si action="del" alors
DimStrSQL1,StrSQL2
StrSQL1="supprimer du vote où voteid="&request("voteid")
conn.Exécuter StrSQL1
StrSQL2="supprimer du titre de vote où voteid="&request("voteid")
conn.Exécuter StrSQL2
réponse.Redirection "?"
finir si
'Modifier le module
'///////////////////////
'Modifier le formulaire
si action="ajouter" alors
%>
<table border=1 cellpacing="0" style="border-collapse: collapse" cellpadding="0" bgcolor="#ffffff" bordercolor="#C0C0C0" width=100%>
<tr>
<td bgcolor="#EFEFEF"><centre>
Ajouter un nouveau sondage</center></td>
</tr>
<tr>
<td>Veuillez saisir le nombre d'options requises pour ce sondage. </td>
</tr>
<tr>
<td><form name="form1" method="post" action="?action=add1">
<select name="num">
<%for i1=2 à 10%>
<option value="<%=i1%>"><%=i1%></option>
<%suivant%>
</sélectionner>
<input type="submit" name="Soumettre" value="Soumettre">
</form></td>
</tr>
</table>
<%
finir si
si action="add1" alors
num=requête("num")
%>
<table border=1 cellpacing="0" style="border-collapse: collapse" cellpadding="0" bgcolor="#ffffff" bordercolor="#C0C0C0" width=100%>
<tr>
<td bgcolor="#EFEFEF"><centre>
Ajouter un nouveau sondage</center></td>
</tr>
<tr>
<td>Veuillez saisir les détails requis pour ce sondage. </td>
</tr>
<tr>
<td><form name="form2" method="post" action="?action=add2">
nom de vote
<input type="text" name="votetitle">
<br>
<%for i2=1 à num%>
Options<%=i2%><input type="text" name="<%=i2%>"><br>
<%suivant%>
<input type="hidden" name="num" value="<%=request("num")%>">
<input type="submit" name="Submit2" value="Submit">
<input type="reset" name="Submit3" value="Reset">
</form></td>
</tr>
</table>
<%end si
si action="add2" alors
Définir rs=Server.CreateObject("ADODB.Recordset")
sql="SELECT * FROM titre de vote"
rs.Open sql, conn, 1,3
rs.Addnew
rs("titre de vote")=requête("titre de vote")
rs("heure")=date()
rs.Mise à jour
rs.Fermer
set rs=conn.execute("sélectionnez le premier numéro de vote dans l'ordre des titres de vote par numéro de vote desc")
id de vote=rs("id de vote")
rs.fermer
définir rs = rien
'///////////////
'/////////////faire du vélo
num=requête("num")
pour i3=1 à num
Définir rs=Server.CreateObject("ADODB.Recordset")
sql="SELECT * FROM vote"
rs.Open sql, conn, 1,3
rs.Addnew
rs("titre")=requête(i3)
rs("idvote")=idvote
rs.Mise à jour
rs.Fermer
suivant
'////////////Fin de boucle
Définir rs=Rien
réponse.Écrivez "<a href=admin_vote_list.asp>Ajouté avec succès, veuillez revenir</a>"
finir si
'Formulaire de fin de modification
'//////////////////////
'Modifier le code d'exécution
'Fin de la modification du code d'exécution
%>
<%if action="" alors
set rs=conn.execute("select * from votetitle order by voteid desc")
%>
<table border=1 cellpacing="0" style="border-collapse: collapse" cellpadding="0" bgcolor="#ffffff" bordercolor="#C0C0C0" width=100%>
<tr>
<td colspan="2" bgcolor="#EFEFEF">Toutes les listes de vote</td>
</tr>
<%do while not rs.eof%>
<tr>
<td width="44%">Numéro : <font color="#FF0000"><%=rs("voteid")%> </font><a href="vote.asp?voteid=<% =rs("voteid")%>" target="_blank"><%=rs("votetitle")%>
</a>(<%=rs("time")%>)</td>
<td width="50%">【<a href="?action=del&voteid=<%=rs("voteid")%>">Supprimer</a>】</td>
</tr>
<%rs.movenext
boucle
rs.fermer
définir rs=rien%>
<tr>
<td colspan="2">[<a href="?action=add">Ajouter un nouveau sondage</a>]</td>
</tr>
</table>
</corps>
</html>
<%end if%>
L'effet d'affichage final est le suivant :