Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/08/2008, 10:26
Avatar de estibaliz2006
estibaliz2006
 
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 20 años
Puntos: 1
completar sistema de paginacion

hola a todos/as. tengo este sistema de paginación:


/////////////////////////////////////////////////////////////////////////////////////////////////////
Defino cuantos registros tendrá cada página:

Código PHP:
$registros = 12; 
Compruebo si la variable $pagina (indica el numero de pagina actual) esta definida, si no es así le damos el valor 1 ósea que si no se paso por la url la variable $pagina (por ejemplo: "seccion.php?pagina=2") entramos a la pagina 1 directamente... La variable $inicio indica desde que registro empezar a mostrar los datos


Código PHP:
$pagina = $_GET["pagina"];

if (!
$pagina) { 
$inicio = 0; 
$pagina = 1; 
} 
else { 
$inicio = ($pagina - 1) * $registros; 
} 

obtenemos el numero de resultados totales...


Código PHP:
$resultados = mysql_query("SELECT id FROM productos WHERE categoria= '$cat'"); 
$total_registros = mysql_num_rows($resultados); 
limitamos los resultados devueltos:

Código PHP:
$resultados = mysql_query("SELECT * FROM productos WHERE categoria= '$cat' ORDER BY nombreDESC LIMIT $inicio, $registros"); 
$total_paginas = ceil($total_registros / $registros); 
Mostramos los resultados:

Código PHP:
while($articulo=mysql_fetch_array($resultados)) { 

echo 
"<b>".$articulo["titulo"]."</b><br>"; 
echo 
"<font color='#666666'>".$articulo["descripcion"]."</font><br><br><br>"; 

} 
y por último paginamos:

se divide en tres partes, primero la que muestra el link a la pagina anterior


Código PHP:
if(($pagina - 1) > 0) { 
echo 
"<a href=seccion.php?cat='$cat&pagina=".($pagina-1)."'>< Anterior</a> "; 
} 
El link a la pagina anterior será visible siempre y cuando no estemos en la primer pagina ($pagina - 1) > 0). La segunda parte del navegador de paginas seria la que muestra la cantidad de paginas...


Código PHP:
for ($i=1; $i<=$total_paginas; $i++){ 
if (
$pagina == $i) { 
echo 
"<b>".$pagina."</b> "; 
} else { 
echo 
"<a href=seccion.php?cat='$cat'&pagina=$i'>$i</a> "; 
} } 
Y la tercer parte es la que muestra el enlace a la pagina siguiente...


Código PHP:
if(($pagina + 1)<=$total_paginas) { 
echo 
" <a href=seccion.php?cat='$cat'&pagina=".($pagina+1)."'>Siguiente ></a>"; 
} 
bien. la paginación la hace correcta. cuál es el problema? el problema es que si yo tengo 58 páginas aparecerá

1[2][3][4][5][6][7][8][9][10][11][12][13][SIGUIENTE] y así hasta la 58. Yo lo que quiero es que aparezcan solo las 5 siguientes y las cinco anteriores a la que se está y después los enlaces [anterior] y [siguiente] como ahora pero además [primero] y [último]

me podéis echar una mano? gracias a todos/as