Haciendo un Refresh en ASP
Con este script se logra un refresh en nuestra página. Es un código muy simple que agrega un encabezado a nuestra página asp, provocando un refresh. El nombre del encabezado como lo verán en el código es "Refresh". Luego se coloca una coma, y nuevamente entre comillas el numero de segundos que deben pasar hasta el siguiente refresh. Lla sintaxis es muy simple.
<% response.Expires = 0 response.Buffer = true la siguiente linea escribe el encabezado... produciendo el refresh. response.Addheader "Refresh", "120" %>
La dos primeras lineas son para evitar la caché del browser, y poner el Buffer en true. Pueden ser retiradas y el refresh seguirá actuando. Pero recomiendo dejarlas ya que hay veces que la página se almacena en la caché.
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. ;)
Contar los usuarios activos que hay en el sitio
Este conocido script que se encuentra en casi todos los sitios de ASP, sirve para contar los visitantes activos (presentes en el momento), que hay en nuestro sitio web. El codigo se debe usar en el archivo Global.asa. No debe ir encerrado entre <% y %>.
Aqui esta el codigo que va en el Global.asa
<script language=vbscript runat=server>
sub Application_OnStart
Application("Activos") = 0
end sub
sub Application_OnEnd
end sub
sub Session_OnStart
Application.Lock
Application("Activos") = Application("Activos") + 1
Application.Unlock
end sub
sub Session_OnEnd
Application.Lock
Application("Activos") = Application("Activos") - 1
Application.Unlock
end subY para mostrar la informacion que recoge el Global.asa, o sea para mostrar los usuarios activos, deben poner lo siguiente en la pagina que muestran el dato:
<p>En este momento hay <%=Application("Activos")%> usuario/s en nuestro sitio</P>Simple contador de visitas
La base de datos del ejemplo se llama mibd y la tabla se llama visitas. El campo es cuantos.
<%
Hacemos la conexión a la BD.
Set Conn = Server.CreateObject ("ADODB.Connection")
Set RS = Server.CreateObject ("ADODB.RecordSet")
tem="DRIVER={Microsoft Access Driver (*.mdb)}; "
tem = tem & "DBQ=" & server.MapPath("mibd.mdb")
Conn.open tem
sql = "select * from visitas"
RS.open sql, Conn,1,3
Ahora nos fijamos si existe ya un registro.
Si no existe lo creamos.
If RS.EOF then
Conn.execute"insert into cuenta (cuantos) VALUES (1)"
Si existe el registro se aumenta en 1 el valor.
else
Conn.execute"update cuenta SET cuantos="&(rs("cuantos")+1)&""
end IF
La siguiente linea imprime la cantidad de cuantos.
response.Write "Hasta este momento esta pagina fue ""visitada"": "&RS("cuantos")&""
cerramos y limpiamos los objetos.
RS.close
Conn.close
Set RS = nothing
Set Conn = nothing
%>Esto cuenta los usuarios que ingresan a la página. Ojo! Cuenta cada refresh de la página. Cada refresh pedido se sumara al registro. Asi que no serán usuarios reales, sino que cada vez que se llame a esta página se sumará uno. Para hacer un contador de usuarios reales deberian crear una Session y cuando esté en valor true, no sumar otro el usuario (visita) a nuestra BD.