Los Foros de ASPTutor.com
Home | Perfil | Registrarse | Temas Activos | Miembros | Buscar | FAQ
Usuario:
Password:
 Todos los Foros
 ASP
 Input + hidden + condicional...
 Foro Bloqueado  Tema Bloqueado


Autor Temas
MrDudas
New Member


69 Posts
Mensajes - 17 Sep 2004 :  10:57:28  Ver Perfil  Enviar Email
Hola a to2

Tengo un problemilla y me tiene atascado, a ver si me podeis echar una mano...

Se trata de lo siguiente:

En una página asp, muestro un artículo, en el que el usuario puede votar por el a través de un input. Ese input lleva asociado un input hidden, de tal manera que en el form, a través del método post, recojo de nuevo el valor del input y a través de un condicional (if request.form("votar")="si" then...), muestro un mensaje en la pantalla, informando que el usuario ha votado, y su voto ha sido contabilizado.

Hasta ahí todo bien, pero el problema es que si un usuario vuelve atrás con el botón de la barra del navegador, la página que se carga, es la misma (porque evidentemente venía de esa misma página, antes de mirar el request.form("votar"), cuando mostraba el input "votar" (cosa que una vez votado, ya no muestra, pero sí que muestra en cambio, el mensaje indicado anteriormente). Si se vuelve a pinchar en ese botón del navegador, se vuelve a la sección de los artículos.

El tema lo tengo solucionado a través de un botón que tengo en la parte inferior del artículo en cuestión (el art. mostrado), pues si se le da al botón "volver", si que me vuelve a la sección donde muestro el listado de artículos.

Resumen: lo tengo solucionado a través de un botón que hay en la parte inferior de mi página (volver), pero no sé como solucionarlo para que a través del botón de la barra del navegador, me salte 2 páginas atrás, o si no se puede, que me tome la página del artículo después de haberlo votado, como "proveniente" del listado de artículos (esta página sería su página anterior), en lugar de esa misma página con el artículo, pero antes de votar.

Os muestro el código de la página (solo la parte afectada):

<TABLE CELLSPACING="0" CELLPADDING="2" BORDER="0" WIDTH="90%">
<TR><TD ALIGN="CENTER">
<A HREF="articulos.asp" onMouseOver="window.status='Listado de articulos';return true;" onMouseOut="window.status='';return;"><IMG BORDER="0" SRC="img/concursoarticulos.gif" ALT="" WIDTH="220" HEIGHT="23"></A>
</TD></TR>
<TR><TD>
<%
'Miramos el querystring, y si es menor que 1
'mostramos la página con el listado de articulos TOP 10
if Request.Querystring("id")<1 then
Response.redirect "articulos.asp"
end if

set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")
oConn.Open ("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("/miweb/pruebas/articulillosxx1020.mdb"))
SQL="SELECT * FROM articulos where id=" & Request.QueryString("id")
rs.Open SQL, oConn, 1, 3

'Si la base de datos contiene el registro seleccionado (la id igual al querystring), que haga lo que sigue a continuación
If Not rs.EOF then
'Que sume un hit a las veces que se ha visto este articulo
rs("hits")=rs("hits")+1
rs.Update

'Si han votado por la articulo cuya id es la del form oculto,
'que le sume 1 voto en la base de datos, para lo cual
'miramos si la sesión de la id correspondiente a ese articulo
'es distinta a true (lo que significa que no ha sido votada previamente),
'y si así fuera, le permitimos el voto
If session(rs("id"))<>true and Request.form("votar")="si" then
rs.Fields("votos")=rs.Fields("votos")+1
rs.Update
'Ponemos la sesión de esa id a true, una vez votado el articulo
'para que no sume un nuevo voto, si intenta volverla a votar
session(rs("id"))=true
end if
'ahora que siga haciendo lo siguiente, si la consulta no está vacía
%>

<!-- #include file="reemplazartexto.asp" -->

<TABLE ALIGN="CENTER" CELLSPACING="0" CELLPADDING="3" BORDER="0" WIDTH="100%">
<TR><TD>
<TD VALIGN="TOP">
<DIV ALIGN="JUSTIFY">
<B>T&iacute;tulo:</B> <%Response.Write AcomodarTexto(rs("titulo"))%><BR>
<B>Autor:</B> <%Response.Write AcomodarTexto(rs("autor"))%><BR>
<B>Art&iacute;culo:</B> <%Response.Write AcomodarTexto(rs("articulo"))%><BR>
<B>Votos recibidos:</B> <%Response.Write FormatNumber(rs("votos"),0,,,-1)%><BR><BR>
<%if session(rs("id"))<>true then%>
<FORM METHOD="POST" ACTION="articulo.asp?id=<%=rs("id")%>" NAME="votacion">
&nbsp; &nbsp; <INPUT TYPE="submit" CLASS="boton3" NAME="votacion" VALUE="Votar"><INPUT TYPE="hidden" NAME="votar" SIZE="4" VALUE="si">
</FORM>
<%else%>
Tu voto ha sido contabilizado. Gracias por participar.
<%end if%>
</DIV>
</TD></TR>
</TABLE>
<%
else
'Si está vacía la base de datos
Response.Write "<DIV ALIGN='CENTER'>La articulo seleccionado no est&aacute; en la base de datos.</DIV>"
end if
%>

<%
'Cerramos y limpiamos los objetos
rs.Close
oConn.Close
set rs=nothing
set oConn=nothing
%>

</TD></TR>
</TABLE>

<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR><TD WIDTH="33%">
<%'Si ha votado, que vaya dos páginas atrás
If request.form("votar")="si" then
%>
<A HREF="#" onClick="history.go(-2)" onMouseOver="window.status='P&aacute;gina anterior';return true;" onMouseOut="window.status='';return;"><IMG BORDER="0" SRC="img/volver.gif" WIDTH="13" HEIGHT="13" ALT="P&aacute;gina anterior"></A>
<%else%>
<A HREF="#" onClick="history.go(-1)" onMouseOver="window.status='P&aacute;gina anterior';return true;" onMouseOut="window.status='';return;"><IMG BORDER="0" SRC="img/volver.gif" WIDTH="13" HEIGHT="13" ALT="P&aacute;gina anterior"></A>
<%end if%>
</TD></TR>
</TABLE>

¿Alguna sugerencia?. Gracias anticipadas. Y perdón por la extensión de la pregunta.

   
 Foro Bloqueado  Tema Bloqueado
Ir a:
Los Foros de ASPTutor.com Los Foros de ASPTutor.com
Ir al principio de la Página

 Imprimir Tema
 

Descargas de manuales¦ Ejemplos de código ¦ Artículos mas visitados ¦ Envía tu articulo ¦ Foros ¦
  Libro de visitas ¦Crea un enlace con ASPTutor 
 

    © 2001-Hasta hoy  Pedro Rufo Martín  contactar