Foros del Web » Programando para Internet » ASP Clásico »

Libro de Visitas

Estas en el tema de Libro de Visitas en el foro de ASP Clásico en Foros del Web. Tengo un libro de visitas hecho en ASP y VBScript.(No se si me equivoco de foro otra vez).El caso es que salen al mostrarse los ...
  #1 (permalink)  
Antiguo 27/08/2002, 05:26
 
Fecha de Ingreso: agosto-2002
Mensajes: 11
Antigüedad: 22 años, 8 meses
Puntos: 0
Libro de Visitas

Tengo un libro de visitas hecho en ASP y VBScript.(No se si me equivoco de foro otra vez).El caso es que salen al mostrarse los registros mas antiguos primeros. Deseo lo contrario, y he probado varias maneras sin conseguirlo. Si lo hago con bases de datos no hay problema con el Order by Desc.Pero el caso es que es con un archivo de texto, empleando el FileSystemObject.
¿Sabe alguien la forma que los registros de un archivo de texto se muestren en orden inverso?.Gracias
  #2 (permalink)  
Antiguo 27/08/2002, 06:22
 
Fecha de Ingreso: agosto-2002
Mensajes: 11
Antigüedad: 22 años, 8 meses
Puntos: 0
Re: Libro de Visitas

He probado el siguiente código pero al abrir el libro no encuentra el final del archivo. Como veis primero leo todo el contenido del archivo de golpe y lo guardo en una variable "todo"
Despues sobreescribo el archivo con el nuevo registro primero seguido de todo el contenido anterior. Funciona al escribir, pero luego al querer leer linea a linea da error.
<%
If Request.Form("Button") = "Guardar" Then
Set ObjetoArchivo = Server.CreateObject("Scripting.FileSystemObje ct")
Set ArchivoTexto = ObjetoArchivo.OpenTextFile(Server.MapPath("Gu estbook.txt"),1)

Set todo=ArchivoTexto.ReadAll


Set ObjetoArchivo = Server.CreateObject("Scripting.FileSystemObje ct")
Set ArchivoTexto = ObjetoArchivo.OpenTextFile(Server.MapPath("Gu estbook.txt"),2)

ArchivoTexto.WriteLine Date()
ArchivoTexto.WriteLine(Request.Form("Nombre&q uot;))
ArchivoTexto.WriteLine(Request.Form("email&qu ot;))
ArchivoTexto.WriteLine(Request.Form("URL&quot ;))
ArchivoTexto.WriteLine(Request.Form("texto&qu ot;))
ArchivoTexto.WriteLine("<!-- FIN -->")
ArchivoTexto.WriteLine todo
ArchivoTexto.Close
Application.Unlock
Response.Redirect "mostrarlibro.asp"
End If
%>
  #3 (permalink)  
Antiguo 27/08/2002, 11:04
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Re: Libro de Visitas

pero dónde lo mostras al archivo? cual es el código que da error?
  #4 (permalink)  
Antiguo 27/08/2002, 11:25
 
Fecha de Ingreso: agosto-2002
Mensajes: 11
Antigüedad: 22 años, 8 meses
Puntos: 0
Re: Libro de Visitas

Este sería el código de la página que abre el libro de visita, no se si te servirá para ver el error.
<%
Function convertir(s)
s = Replace(s, chr(10), "<BR>")

s = Replace(s, "<", "<")
s = Replace(s, ">", ">")
convertir = s
End Function
Set ObjetoArchivo = Server.CreateObject("Scripting.FileSystemObje ct")
Set ArchivoTexto = ObjetoArchivo.OpenTextFile(Server.MapPath("Gu estbook.txt"))


WHILE NOT ArchivoTexto.AtEndOfStream

linea = ArchivoTexto.ReadLine
Response.Write("Fecha: " & convertir(Linea) & "<BR>")

linea = ArchivoTexto.ReadLine
Response.Write("Nombre: " & convertir(Linea) & "<BR>")

Linea = ArchivoTexto.ReadLine
email = convertir(Linea)
If email<>"" Then
Response.Write "e-mail: "
Response.Write "<A HREF='mailto:" & email & "'>"
Response.Write email & "</A><BR>"
Else
Response.Write "sin e-mail<BR>"
End If

Linea = ArchivoTexto.ReadLine
URL = convertir(Linea)
If URL<>"" Then
Response.Write "Pagina Web: "
Response.Write "<A HREF='" & URL & "' TARGET='_blank'>"
Response.Write URL & "</A><BR>"
Else
Response.Write "sin pagina web<BR>"
End If

Do
Linea = ArchivoTexto.ReadLine
If Linea = "<!-- FIN -->" Then
Exit Do
End If
Response.Write convertir(Linea) & "<BR>"
Loop
Response.Write "<HR>"
WEND
ArchivoTexto.Close
%>
El error que me da es que el código pasa olimpicamente del ArchivoTexto.AtEndOfStream empleado al inicio, y no se porqué.No recuerdo el mensaje que salía, pero va por ahí.
  #5 (permalink)  
Antiguo 27/08/2002, 12:15
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
Re: Libro de Visitas

probé tu código con el siguiente contenido en el archivo Guestbook.txt y funcionó perfectamente:


Código:
27/8/2002
Diego
[email protected]
http://www.algo.com.ar/
<!-- FIN -->
27/8/2002
Diego
[email protected]
http://www.algo.com.ar/
<!-- FIN -->
27/8/2002
Diego
[email protected]
http://www.algo.com.ar/
<!-- FIN -->
27/8/2002
Diego
[email protected]
http://www.algo.com.ar/
<!-- FIN -->
al quitarle el último <!-- FIN --> si que da error
  #6 (permalink)  
Antiguo 27/08/2002, 13:01
 
Fecha de Ingreso: agosto-2002
Mensajes: 11
Antigüedad: 22 años, 8 meses
Puntos: 0
Re: Libro de Visitas

Estoy dando la lata demasiado pero he vuelto a probar el código y sale el siguiente error
"Input past end of file", al intentar mostrar el libro. He tenido que quitar la referencia de Set todo=ArchivoTexto.ReadAll en el de escritura por todo=ArchivoTexto.ReadAll pues me salia otro error si no quitaba la palabra Set.
Yo creo que la clave está en que el escribir
Response.WriteLine todo el final del archivo no queda marcado.....?Y al intentar leerlo para mostrarlo no sabe donde termina. Es una suposición.
  #7 (permalink)  
Antiguo 27/08/2002, 17:33
 
Fecha de Ingreso: agosto-2002
Mensajes: 11
Antigüedad: 22 años, 8 meses
Puntos: 0
Re: Libro de Visitas

Parece que he averiguado la fuente del problema.Efectivamente al sobreescribir el archivo con un nuevo registro y el contenido de todo el anterior a continuación de este se inserta al final un renglón en blanco cada vez que hace la operación. Así al leerlo no encontraba el límite del archivo y daba error. He corregido diciendole al código lector que si venía después de la marca "<!--FIN-->", un renglón vacio salga del bucle. ¡Y FUNCIONA! Como lo que viene despues de la marca <!--FIN--> es la fecha nunca corre el riesgo de estar en blanco si hay registros. Si se os ocurre algo mejor me lo decis. Los códigos los teneis arriba.
Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:01.