Ejemplo de paginacion profesional


http://www.asptutor.com

Paginación profesional de resultados    

 

IMPORTANTE: antes de liarte con este ejemplo es necesario que hallas practicado y entendido el ejemplo de paginación sencilla y que estés familiarizado con los distintos métodos request .

 

Vas a necesitar el archivo de variables Adovbs.inc descárgalo AQUI

 

En este ejemplo se muestra como conseguir una paginación de resultados de una consulta con un aspecto y funcionalidad igual a la usada en los buscadores tipo Yahoo , Terra, etc.

Para ello utlizaremos un formulario que nos ofrecera las opciones de páginación.

Los datos los enviaremos mediante el metodo GET , que nos los enviara como una cadena de consulta.

La página asp recibira las opciones mediante request.querystring y se llamara a si misma con esas mismas opciones mediante un link con cadena de consulta que nosotros elaboraremos en el pie de página.

 

Formulario de captura de opciones:

PPROF.HTM

<html>

<head>

<title>Consultas</title>

</head>

<body bgcolor="#800000">

<p align="center"><font color="#FFFFFF">

<big><big><big>Paginación Profesional de resultados</big></big></big></font></p>

<p align="center"><font color="#FFFFFF"><big>Listado de libros</big></font></p>

<form method="GET" action="pprof.asp">

<table border="1" width="100%" height="203">

<tr>

<td width="100%" align="center" height="23"><font color="#FFFFFF">

<b><i>Selecciona el campo de ordenacion</i></b></font></td>

</tr>

<tr>

<td width="100%" bgcolor="#FFFFCC" height="30"><table border="0" width="100%"

bgcolor="#FFCC99">

<tr>

<td width="50%" align="center">

<input type="radio" value="autor" name="orden" checked>Autor</td>

<td width="50%" align="center">

<input type="radio" value="titulo" name="orden">Titulo</td>

</tr>

</table>

</td>

</tr>

<tr>

<td width="100%" height="23"><div align="center"><center><p><i><font color="#FFFFFF">

<b>Selecciona la cantidad de registros por página</b></font></i></td>

</tr>

<tr>

<td width="100%" height="103"><table border="0" width="100%" bgcolor="#FFFFCC">

<tr>

<td width="20%" align="center" bgcolor="#FFCC99"><input type="radio" value="25"

name="tamanopagina">&nbsp; 25</td>

<td width="20%" align="center" bgcolor="#FFCC99"><input type="radio" name="tamanopagina"

value="35" checked>&nbsp; 35</td>

<td width="20%" align="center" bgcolor="#FFCC99"><input type="radio" name="tamanopagina"

value="50">&nbsp; 50</td>

<td width="20%" align="center" bgcolor="#FFCC99"><input type="radio" name="tamanopagina"

value="75">&nbsp; 75</td>

<td width="20%" align="center" bgcolor="#FFCC99"><input type="radio" name="tamanopagina"

value="all">&nbsp; todos</td>

</tr>

</table>

<div align="center"><center><p><input type="submit" value="Enviar" name="B1"></td>

</tr>

</table>

<font color="#FFFFFF"><div align="center"><center><p>&nbsp;</p>

</center></div>

</form>

</font>

</body>

</html>

 

Conseguimos un formulario como este:

 Selecciona el campo de ordenacion
  Autor   Titulo

Selecciona la cantidad de registros por página

  25   35   50   75   todos

 

Pagina de Listado

PPROF.ASP

<!-- #include file="adovbs.inc" -->

<html>

<head>

<title>Consultas</title>

</head>

<body bgcolor="#800000">

<p align="center"><font color="#FFFFFF"><big><big><big>Paginacion Profesional</big></big></big></font></p>

<p align="center"><font color="#FFFFFF"><big>Listado de libros</big></font></p>

<font color="#FFFFFF"><%

 

Server.ScriptTimeOut=180

 

tamanopagina=request.querystring("tamanopagina")

if tamanopagina = "" then

tamanopagina=25

end if

 

paginaabsoluta=request.querystring("paginaabsoluta")

if paginaabsoluta="" then

paginaabsoluta=1

end if

orden=request.querystring("orden")

if orden = "" then

orden="codigo"

end if

set rs = CreateObject("ADODB.Recordset")

rs.CursorType = adOpenKeyset

rs.LockType = adLockOptimistic

sqltxt="SELECT * FROM biblioteca order by "&orden

rs.Open sqltxt, "DSN=biblioteca"

if tamanopagina <> "all" then

rs.pagesize= cint(tamanopagina)

rs.absolutepage=cint(paginaabsoluta)

 

contador=1%>

 

<table align="center">

<% do while not rs.eof and contador <= cint(tamanopagina) %>

<tr>

<td width="21%" bgcolor="#C59530"><%=rs("autor")%>

</td>

<td width="21%" bgcolor="#C59530"><%=rs("titulo")%>

</td>

</tr>

<%rs.movenext

contador=contador+1

loop%>

</table>

<p align="center">Pulsa en la página a la que deseas ir </p>

<table align="center" bgcolor="#ffffff">

<tr>

<%j=0

if cint(paginaabsoluta) <> 1 then

atras=cint(paginaabsoluta)-1

response.write "<td align=center><a href=pprof.asp?orden="&orden&"&tamanopagina="&tamanopagina&"&paginaabsoluta=" & atras & ">"&"&lt;&lt;"&"</a></td>"

j=j+1

end if

for i = 1 to rs.pagecount

j=j+1

if j>20 then

response.write "</tr><tr>"

j=1

end if

if cint(i) = cint(paginaabsoluta) then

response.write "<td bgcolor=#00ff00 align=center>"&i&"</td>"

else

response.write "<td align=center><a href=pprof.asp?orden="&orden&"&tamanopagina="&tamanopagina&"&paginaabsoluta=" & i & ">"&i&"</a></td>"

end if

next

end if%>

<%if cint(paginaabsoluta) <> rs.pagecount then

atras=cint(paginaabsoluta)+1

response.write "<td align=center><a href=pprof.asp?orden="&orden&"&tamanopagina="&tamanopagina&"&paginaabsoluta=" & atras & ">"&"&gt;&gt;"&"</a></td>"

end if%>

</tr>

</table>

<p align="center">&nbsp; </font></p>

</body>

</html>

 

Con lo que obtendreis este resultado:

pprof.jpg (57543 bytes)

Puedes ver el ejemplo funcionando en real pulsando en el dibujo


Atras

adelante.gif (1090 bytes)