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

De nuevo: paginación

Estas en el tema de De nuevo: paginación en el foro de ASP Clásico en Foros del Web. A ver... tengo dos páginas web. En una tengo un formulario de consulta (consufh.htm) y en otra una página asp que me pagina los resultados ...
  #1 (permalink)  
Antiguo 17/02/2003, 10:03
Avatar de blade72  
Fecha de Ingreso: junio-2002
Ubicación: Valencia
Mensajes: 734
Antigüedad: 22 años
Puntos: 2
De nuevo: paginación

A ver... tengo dos páginas web. En una tengo un formulario de consulta (consufh.htm) y en otra una página asp que me pagina los resultados (fhfrase.asp). El código de esta última es que viene más abajo.

frase=request.form("frase") es la variable que recoge de la página de consulta. El código parece estar bien, NO DA ERROR, el problema es que la primera páginación da los resultados bien, pero cuando pulso en la segunda página de la paginación, parece que "olvida" la consulta (como si perdiera el valor de la variable) y me saca todos los registros. Alguien me puede decir cómo modificar el código para que funcione bien.

Gracias.


<HTML>
<HEAD>
<TITLE>Paginar un recordset</TITLE>


<%


Response.Write("<CENTER><H2>Paginando un recordset</H2></CENTER>")

Dim oConn, rs, SQL
Dim PaginaActual ' en qué pagina estamos
Dim PaginasTotales ' cuántas páginas tenemos
Dim TamPagina ' cuantos registros por pagina
Dim CuantosRegistros ' para imprimir solo el nº de registro por pagina que queramos

'MODIFICAR AQUI PARA CAMBIAR EL Nº DE REGISTRO POR PAGINA
TamPagina=10

'Leemos qué página mostrar. La primera vez será la inicial
if Request.Querystring("pagina")="" then
PaginaActual=1
else
PaginaActual=CInt(Request.Querystring("pagina"))
end if

set oConn=Server.CreateObject("ADODB.Connection")
set rs=Server.CreateObject("ADODB.Recordset")

' Conexión por OLEDB
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("FH.mdb")

frase=request.form("frase")

SQL="SELECT * FROM fh4 where frase like '%" & frase & "%' ; "

' Defino el tamaño de las páginas
rs.PageSize=TamPagina
rs.CacheSize=TamPagina
' Defino el cursor en el cliente: adUseClient
rs.CursorLocation = 3

' Abro el recordset
rs.Open SQL, oConn, 1, 2

'Cuento las páginas
PaginasTotales=rs.PageCount

'Compruebo que la pagina actual está en el rango
if PaginaActual < 1 then
PaginaActual = 1
end if
if PaginaActual > PaginasTotales then
PaginaActual = PaginasTotales
end if

'Por si la consulta no devuelve registros!
if PaginasTotales=0 then

Response.Write("No se encontraron resultados.")

else

'Vamos a paginar
rs.AbsolutePage=PaginaActual
Response.Write("Pagina " & PaginaActual & " de " & PaginasTotales)
Response.Write("<br><br>")
Response.Write("<TABLE BORDER=""1"" ALIGN=""center"">")
Response.Write("<TR><TD COLSPAN=""3""><B>RESULTADOS</B></TD>")
CuantosRegistros=0
do while not rs.EOF and CuantosRegistros < TamPagina
'Pinto una línea de la tabla por cada registro
Response.Write("<TR>"&VbCrLf)
Response.Write("<TD>"&rs("frase")&"</TD>")
Response.Write("<TD>"&rs("autor")&"</TD>")
Response.Write("<TD>"&rs("tema")&"</TD>")
Response.Write("</TR>")
CuantosRegistros=CuantosRegistros+1
rs.MoveNext
loop
Response.Write("</TABLE>")

end if
rs.Close
oConn.Close
set rs=nothing
set oConn=nothing

'Muestro los enlaces
Response.Write("<hr>")
if PaginaActual > 1 then
Response.Write("<A HREF=fhfrase.asp?pagina=" & PaginaActual-1& ">10 Anteriores</A>&nbsp;&nbsp;&nbsp;")
end if
if PaginaActual < PaginasTotales then
Response.Write("<A HREF=fhfrase.asp?pagina=" & PaginaActual+1 &">10 Siguientes</A>")
end if


%>
  #2 (permalink)  
Antiguo 17/02/2003, 10:58
Avatar de blade72  
Fecha de Ingreso: junio-2002
Ubicación: Valencia
Mensajes: 734
Antigüedad: 22 años
Puntos: 2
¡Socorroooooooooooooooo!

Cómo demonios hago que se "acuerde" del valor de "frase" (el valor introducido en el formulario de búsqueda) en la segunda página de la paginación, el valor es nulo, ¿cómo lo recupero?

¡Ayudaaaaa, no puedo salir de aquí!
  #3 (permalink)  
Antiguo 17/02/2003, 11:12
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 5 meses
Puntos: 0
no estaras usando method = "get"?, para tomarlo con un request.form?.
o alguna diferencia con el nombre de la variable del form, diferente a la del request (aunque suene ridiculo, estuve horas peleando con problemas como el tuyo, por haber puesto una letra menos, por ej: input ... name="frase" y lo queria recuperar como request.form("frases").
Suena tonto, pero te puede sacar unas cuantas horas de sueño.
fijate para ir descartando.

saludos
__________________
Juan Pablo
  #4 (permalink)  
Antiguo 17/02/2003, 11:24
Avatar de blade72  
Fecha de Ingreso: junio-2002
Ubicación: Valencia
Mensajes: 734
Antigüedad: 22 años
Puntos: 2
No, no es eso. Yo creo que la clave (creo eh) está en las últimas líneas cuando se llama de nuevo a la página asp pasándole parámetros, porque es entonces cuando pierde el valor de la consulta (almacenado en "frase"). Quizás haya que pasarle como parámetro este valor de nuevo...

¿Cómo se le pasaría a la página de asp 2 parámetros en vez de uno.. ?

P. ej (en el formulario de búsqueda de ya.com):
http://buscador.ya.com/scripts/busqu...vascript&se=1,

aquí se le pasan dos valores, item y se, así no se pierden al hacer la paginación.

¿Cóoomooo lo hagooo que no me saleeee?
  #5 (permalink)  
Antiguo 17/02/2003, 11:27
Avatar de blade72  
Fecha de Ingreso: junio-2002
Ubicación: Valencia
Mensajes: 734
Antigüedad: 22 años
Puntos: 2
He cambiado
Response.Write("<A HREF=fhfrase.asp?pagina=" & PaginaActual+1 &">10 Siguientes</A>")

y en vez de poner el valor de página he puesto el de frase...

y funciona, solo que ahora no pagina, siempre se queda en la misma página.

Y no consigo pasarle los dos valores, algo me falla.

Creo que si consigo pasarle los dos valores funcionará.. ¿alguna idea?

Gracias.

Vengaaa, no puede ser tan dificill, ya estoy muy cercaaaaaaaaa
  #6 (permalink)  
Antiguo 17/02/2003, 11:39
Avatar de blade72  
Fecha de Ingreso: junio-2002
Ubicación: Valencia
Mensajes: 734
Antigüedad: 22 años
Puntos: 2
Hala, ya está, yo solo me lo he resuelto ( pa mí)

Response.Write("<A HREF=fhfrase.asp?frase=" & frase & "&pagina=" & PaginaActual+1 &">15 Siguientes</A>")

con esta sentencia le paso los dos valores y funciona perfectamente. Así ·se acuerda" de los dos valores al hacer la paginación.

Oleeeeeeeeeee.
  #7 (permalink)  
Antiguo 17/02/2003, 11:39
 
Fecha de Ingreso: diciembre-2002
Ubicación: argentina... de ahí seran veinte cuadras
Mensajes: 382
Antigüedad: 21 años, 5 meses
Puntos: 0
creo que podés mandar por query el valor de la variable, no estoy seguro, pero probá.

abajo en donde pones <a href... a parte de pasar el valor que estas pasando
ej:..a href....pagina.asp?variable=valor&frase=valor

no lo he probado, pero creo que puede funcionar.


saludos
__________________
Juan Pablo
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 22:40.