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

como mostrar un numero determinado de paginas de una paginacion??

Estas en el tema de como mostrar un numero determinado de paginas de una paginacion?? en el foro de ASP Clásico en Foros del Web. Hola amigos quisiera saber como hacer eso de que aparezcan solo n numero de paginas en esta paginacion Código: <% Dim rs Dim Conn Dim ...
  #1 (permalink)  
Antiguo 19/05/2005, 23:39
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
como mostrar un numero determinado de paginas de una paginacion??

Hola amigos quisiera saber como hacer eso de que aparezcan solo n numero de paginas en esta paginacion
Código:
<%
Dim rs
Dim Conn
Dim sqltxt
Dim tamanopagina
Dim tamanoimg
Dim paginaabsoluta
Dim inicio
Dim fin
Dim contador
Dim j
Dim n
Dim i
Dim atras
Dim rate
Dim orden
Dim cancion
Server.ScriptTimeOut=180
tamanopagina=request.querystring("tamanopagina")
orden=request.querystring("orden")
if orden = "" then
orden="cancion"
end if
if tamanopagina = "" then
tamanopagina=10
end if
paginaabsoluta=request.querystring("paginaabsoluta")
if paginaabsoluta="" then
paginaabsoluta=1
end if
set rs = CreateObject("ADODB.Recordset")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("" & DB & ""))
rs.CursorType = adOpenKeyset
rs.LockType = adLockOptimistic
sqltxt="SELECT * FROM tablaturas ORDER BY " & orden & ""
rs.Open sqltxt, conn
if tamanopagina <> "all" then
rs.pagesize= cint(tamanopagina)
rs.absolutepage=cint(paginaabsoluta)
contador=1
%>
.
contenido...
.
<%
rs.movenext
contador=contador+1
loop
%> 
<div align="center" class="text">Página: </div><table align="center">
<table border="0" align="center" cass="text">
 <tr>
<%j=0
if cint(paginaabsoluta) <> 1 then
atras=cint(paginaabsoluta)-1
response.write "<td align=""center""><a href=""tablaturas.asp?tamanopagina="&tamanopagina&"&paginaabsoluta=" & atras & """>"&"&lt;&lt;"&"</a></td>"
j=j+1
end if
for i = 1 to rs.pagecount
j=j+1
if j>30 then
response.write "</tr><tr>"
j=1
end if 
if cint(i) = cint(paginaabsoluta) then
response.write "<td align=""center"" class=""text"">"&i&"</td>"
else
response.write "<td align=""center""><a href=""tablaturas.asp?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=""tablaturas.asp?tamanopagina="&tamanopagina&"&paginaabsoluta=" & atras & """>"&"&gt;&gt;"&"</a></td>"
end if
%>
bueno lo que quiero es que en lugar de aparecer todas la páginasm quiero que aparzca la pagina actual con 3 paginas a cada lado, por ejemplo si estoy en la pagina 5 que aparezca << < 2 · 3 · 4 · 5 · 6 · 7 · 8 > >>, donde < y > sean vinculos a la pagina anterior y siguiente respectivamente y << y >> a la primera y a la última respectivamente... bueno eso pues espero que me puedan ayudar... saludos y gracias de antemano
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #2 (permalink)  
Antiguo 20/05/2005, 21:57
Avatar de TurKa  
Fecha de Ingreso: enero-2003
Ubicación: Gerli, Avellaneda
Mensajes: 543
Antigüedad: 21 años, 4 meses
Puntos: 4
Supongo que si reemplazas esto:
if cint(paginaabsoluta) <> rs.pagecount then
atras=cint(paginaabsoluta)+1
response.write "<td align=""center""><a href=""tablaturas.asp?tamanopagina="&tamanopagina& "&paginaabsoluta=" & atras & """>"&"&gt;&gt;"&"</a></td>"
end if

Por este choclo que no te prometo que funcione
Te tiene que servir ¿?¿?
Código:
<%
if CInt(paginaabsoluta) <> rs.PageCount Then
Response.Write "<td align=""center"">"
	If paginaabsoluta > 1 Then
	%><a href="tablaturas.asp?tamanopagina=<%=tamanopagina%>&paginaabsoluta=1"><<</a>
<a href="tablaturas.asp?tamanopagina=<%=tamanopagina%>&paginaabsoluta=<%=(paginaabsoluta-1)%>"><</a>
<%
	End If
%>
<%
If rs.PageCount > 10 Then
	If (paginaabsoluta-5) >=1 Then
		For I = (paginaabsoluta-5) To paginaabsoluta
			If I = paginaabsoluta Then
				Response.Write "<B>"&I&"</B> "
			Else
			%><a href="tablaturas.asp?tamanopagina=<%=tamanopagina%>&paginaabsoluta=<%=I%>"><%=I%></a>
		<%
			End If
		Next
	Else
		For I = 1 To paginaabsoluta
			If I = paginaabsoluta Then
				Response.Write "<B>"&I&"</B> "
			Else
			%><a href="tablaturas.asp?tamanopagina=<%=tamanopagina%>&paginaabsoluta=<%=I%>"><%=I%></a>
			<%
			End If
		Next
	End If
	If (paginaabsoluta+5) =< rs.PageCount Then
		For I = (paginaabsoluta+1) To (paginaabsoluta+5)
			%><a href="tablaturas.asp?tamanopagina=<%=tamanopagina%>&paginaabsoluta=<%=I%>"><%=I%></a>
		<%
		Next
	Else
		For I = (paginaabsoluta+1) To rs.PageCount
			%><a href="tablaturas.asp?tamanopagina=<%=tamanopagina%>&paginaabsoluta=<%=I%>"><%=I%></a>
			<%
		Next
	End If
Else
	For I = 1 To rs.PageCount
		If I = paginaabsoluta Then
			Response.Write "<B>"&I&"</B> "
		Else
		%><a href="tablaturas.asp?tamanopagina=<%=tamanopagina%>&paginaabsoluta=<%=I%>"><%=I%></a> 
		<%
		End If
	Next
End If
%>
<% If paginaabsoluta < rs.PageCount Then
%><a href="tablaturas.asp?tamanopagina=<%=tamanopagina%>&paginaabsoluta=<%=(paginaabsoluta+1)%>">></a>
<a href="tablaturas.asp?tamanopagina=<%=tamanopagina%>&paginaabsoluta=<%=rs.PageCount%>">>></a>
<%
 End If
End If
%>
Te cuento que al paginar, nunca se me ocurrió mostrar solo una determinada cantidad de páginas pero como interesó se me ocurrió esto aunque me salió muyyyyyyy largooooooo. Muestra (supuestamente) de a 10 páginas. ¿Funcionará?

Te cuento más o menos como "supuestamente" debe funcionar:

If paginaabsoluta > 1 Then
Si la página que estás viendo es mayor que 1, llevás al usuario a la primer página con "<<" (paginaabsoluta=1) y a la anterior con "<" (paginaabsoluta-1)

If rs.PageCount > 10
Si la cantidad de páginas totales es mayor que 10 , se viene el choclo!!!!
If (paginaabsoluta-5) >=1 Then
si página actual menos 5 es mayor o igual a 1 (ej. página actual = 9, le restas 5 y da 4), haces un bucle desde paginaabsoluta-5 hasta paginaabsoluta y las enlazas, salvo a paginaabsoluta que como es la actual no la enlazas.

Pero si paginaabsoluta-5 es menor que 1 el bucle lo hacemos desde 1 hasta paginaabsoluta.

Acá terminan los enlaces hacia atrás.

If (paginaabsoluta+5) =< rs.PageCount Then
Si pagina actual + 5 es igual o menor que el total de páginas, hacemos un bucle desde pagina actual +1 (es +1 porque pagina actual ya lo haz escrito antes) hasta paginaabsoluta+5.
Sino, lo haces desde pag.actual+1 hasta total de páginas (rs.PageCount).

Y se viene la fácil:
[b]Si las paginas totales son menores o iguales a 10, la hacemos requete sencillo: hacemos un bucle de 1 hasta total de páginas y enlazamos (excepto la pag. actual).


La merd!!! Espero que funcione. Si no funciona, no me putees en silencio. Vente pa' aquí y dime, que lo arreglamos
__________________
Programación LAMP con Scrum y XP
www.eugeniabahit.com.com.ar
  #3 (permalink)  
Antiguo 20/05/2005, 22:45
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
No se como afectará esto a los recursos del servidor, pero podrías hacerlo con dos bucles:

'Esto genera los links desde la pagina actual hacia dos paginas hacia atrás

for i=Pagina - 2 to Pagina - 1

if i < 1 then
exit for
end if
%>
<a href="tablaturas.asp?tamanopagina=<%=tamanopagina% >&paginaabsoluta=<%=I%>"><%=I%></a>
<%
next

'Este te crea desde la pagina actual dos paginas hacia delante

for i=Pagina to Pagina + 2
if i > RS.PageCount then
exit for
end if
%>
<a href="tablaturas.asp?tamanopagina=<%=tamanopagina% >&paginaabsoluta=<%=I%>"><%=I%></a>
<%
next

Lo acabo de probar y funciona correctamente. No te puedes quejar, tienes ya dos alternativas para hacerlo. Espero que te sirva de algo y que funcione. Saludos Metallick.
  #4 (permalink)  
Antiguo 21/05/2005, 10:43
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
gracias a ambos... cuando las pruebe le comento porque en este minuto estoy llegando de una noche de farra asiesque lo unico que quiero es dormir... pero de todas maneras... muy interesante ambas posibilidades (o lo que en este minuto entiendo de ellas jajajaj ).. bueno eso saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
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 21:08.