Libro de visitas en una sola página

Maria
16 de Julio del 2004
Ya que mi consulta anterior no ha tenido mucho éxito formulo una nueva esperando recibir más respuestas...

Tengo una página asp con un formulario en el que los usuarios escriben sus comentarios y aparecen en esa misma página (tipo libro de visitas), pero debe haber algo mal en el código ya que cada vez que le doy a actualizar la página los datos últimos del formulario se vuelven a cargar en la base de datos y lo mismo pasa si voy atrás y luego vuelvo a esta página..

Bueno, no me enrollo tanto y pongo el código:

<%
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4

dim nombre
dim mail
dim asunto
dim mensaje
dim Conn
dim rs

nombre = Request.form("nombre")
mail = Request.form("mail")
asunto = Request.form("asunto")
mensaje=replace(request.form("mensaje"),chr(10),"<br>")

set Conn = Server.Createobject("adodb.connection")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="bdd.mdb"

set rs=createobject("ADODB.Recordset")
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic

if request("enviar") = "submit" then
sql= "insert into [tabla] (Nombre,Correo,Asunto,Mensaje) VALUES ('"&nombre&"','"&mail&"','"&asunto&"','"&mensaje&"')"
Conn.execute sql
response.Redirect("mismapágina.asp")
end if
%>
blablabla... en html

El formulario:

<form method="post" action="mismapágina.asp">

<table border="0" width="100%">
<tr>
<td width="30%" align="right">Nombre</td>
<td width="70%"><input type="text" name="nombre" size="20" maxlength ="50"></td>
</tr>

<tr>
<td width="30%" align="right">E-Mail</td>
<td width="70%"><input type="text" name="mail" size="20" maxlength ="50">
<input name="asunto" type=hidden value="hola">
</td>
</tr>

<tr>
<td width="100%" colspan="2">
<p align="center">Comentarios/Mensaje</td>
</tr>

<tr>
<td width="100%" colspan="2">
<p align="center"><textarea rows="7" name="mensaje" cols="44"></textarea></td>
</tr>

<tr>
<td width="100%" align="center" colspan="2">
<input type="submit" value="submit" name="enviar">
<input type="reset" value="Borrar" name="borrar">
</td>
</tr>

</table>
</form>

blablabla...

Y aquí vienen las contribuciones al formulario:
<table width="440" border="1">

<%
rs.open "SELECT * FROM llibre WHERE Asunto = 'hola' ORDER BY id DESC", Conn
Do until rs.eof
%>

<tr>

<td width="400"><b><%=rs("Nombre")%></b>
</td>

<td width="20">
<a href="mailto:<%=rs("Correo")%>"><img border="0" src="gb_mail.gif"></a>
</td>

<td width="20">
<p align="right"><font size="1"><%=rs("Fecha")%>&nbsp;</font></p>
</td>
</tr>

<tr>
<td width="440" colspan="3" valign="top"><%=rs("Mensaje")%><br><br>
</td>
</tr>
<%
rs.movenext
loop
rs.close
Conn.close
set rs = nothing
set Conn = nothing
%>
</table>

Muchas gracias!





FISICO
16 de Julio del 2004
Conteste la pregunta anterior espero que te sirva

fernandoc
16 de Julio del 2004
Independientemente de que tengas algún error en lo que haces, tienes que tener en cuenta la configuración de IE, con respecto a la versiones nuevas de la página. Lo mas probable es que recargue la página desde los ficheros temporales de internet ( que están en tu PC ) en vez de recargarlas desde el servidor.
Para evitar esto, la mejor manera que conozco es incluir un campo tipo "hidden" en la página que solicita la página con el formulario, con por ejemplo la fecha y hora del PC, con lo que obligas el recalculo de la página en el servidor, en vez de su lectura en los archivos temporales.
Ej:
Si envias htpp://......./PagConForm.asp y no tienes configurado I.E, es muy posible que te recargue la página desde los archivos temporales.

Si envias htpp://......./PagConForm.asp?Cuando=15720041300, aunque la variable cuando no la utilices para nada, fuerzas la ejecucion en el servidor de la pág.