Para realizar una encuesta y llevar el cuento de votos necesitaremos 1 tabla de Access. Ademas usaremos dos página ASP. En la primera mostraremos la pregunta con el formulario o botones, y en la segunda mostraremos los resultados.
No es nada dificil, pero hay que prestarle antención al código.
La primer pagina es un formulario en HTML:
Archivo: encu.asp
<FORM METHOD="post" ACTION="encu2.asp"> ?Qué programa usas para escribir tus scripts?<BR><BR> Notepad: <INPUT NAME="mismo" TYPE="Radio" VALUE="1"><BR> HomeSite: <INPUT NAME="mismo" TYPE="Radio" VALUE="2"><BR> Visual Interdev: <INPUT NAME="mismo" TYPE="Radio" VALUE="3"><BR> DreamWeaber: <INPUT NAME="mismo" TYPE="Radio" VALUE="4"><BR><BR> <INPUT TYPE="submit" VALUE="Votar!"> </FORM>
La segunda página contiene todo el código ASP. Verifica si votamos, ingresa el voto y muestra el gráfico de barras.
Archivo: encu2.asp
<%@ Language=VBscript%>
<%
Verificamos que efectivamente alguien haya votado.
if Request.Form="" then
Si no votó y redireccionamos a encu.asp
response.Redirect "encu.asp"
%>
<%
else
guardamos en voto la info del formulario.
voto = Request.Form("mismo")
Conectamos a la BD.
Set oConn = Server.CreateObject ("ADODB.Connection")
Set RS = Server.CreateObject ("ADODB.RecordSet")
oConn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=D:tucarpetabdbasebd.mdb"
Con una sentencia SQL pedimos toda la BD.
sql = "select * from encuesta"
RS.open sql, oConn, 2, 2
Si es el primer voto de todos, creamos el registro para que los updateS funcionen.
Este if solo se cumplirá una vez. La primera.
if RS.EOF = true Then
oConn.execute "insert into encuesta(Dato1, Dato2, Dato3, Dato4) VALUES (0,0,0,0)"
RS.Requery
end IF
Comenzamos el chequeo de datos. Para todos igual
if voto = "1" then
Si se cumple el if, sumamos uno al campo correspondiente.
oConn.execute "update encuesta SET Dato1="&RS.Fields("Dato1")+1&""
La siguiente linea hace un Refresh en la Tabla, para tener los datos recientes.
RS.Requery
response.Write "<BR>Voto sumado a NotePad<BR>"
elseif voto = "2" then
oConn.execute "update encuesta SET Dato2="&RS.Fields("Dato2")+1&""
RS.Requery
response.Write "<BR>Voto sumado a HomeSite<BR>"
elseif voto = "3" then
oConn.execute "update encuesta SET Dato3="&RS.Fields("Dato3")+1&""
RS.Requery
response.Write "<BR>Voto sumado a Visual Interdev<BR>"
elseif voto = "4" then
oConn.execute "update encuesta SET Dato4="&RS.Fields("Dato4")+1&""
RS.Requery
response.Write "<BR>Voto sumado a DreamWeaber<BR>"
end IF
Sumamos todos los votos y los guardamos en una variable.
total = CInt(RS("Dato1"))+CInt(RS("Dato2"))+CInt(RS("Dato3"))+CInt(RS("Dato4"))
Mostrar el gráfico.
%>
<TABLE ALIGN="center" WIDTH="90%" BORDER="1" CELLPADDING="0"
CELLSPACING="0"><TR>
<TD>
<IMG HEIGHT="25" SRC="" BORDER="1"
WIDTH="<%= CInt(RS("Dato1")*100/total)%>%"><BR>
<IMG HEIGHT="25" SRC="" BORDER="1"
WIDTH="<%= CInt(RS("Dato2")*100/total)%>%"><BR>
<IMG HEIGHT="25" SRC="" BORDER="1"
WIDTH="<%= CInt(RS("Dato3")*100/total)%>%"><BR>
<IMG HEIGHT="25" SRC="" BORDER="1"
WIDTH="<%= CInt(RS("Dato4")*100/total)%>%"><BR>
</TD></TR></TABLE>
<%
Limpiamos y cerramos todo.
RS.close
oConn.close
Set Rs = nothing
Set oConn = nothing
end IF
%>Ver que la cuenta que se hace para mostrar las barras es mutiplicar por 100 y luego dividir por el total de votos. Eso nos da el porcentaje En el SRC de la tabla que muestra el gráfico no puse ninguna imagen, pero uds podrían poner una imagen de 1x1 de colores diferentes y quedaran barras de colores. ;)