Pulsando en la publicidad ayudas a 1000io.com

Quieres continuar blogueando por 1000io.com?? Si | No

Paginacion de Registros con PHP

Dentro de mi CMS tengo implementado un codigo PHP para la paginación de registros en una consulta a MYSQL. Hasta ahora estaba funcionando sin problemas hasta que en una de las implementaciones que he tenido que realizar se trabaja con mas de 300 registros en algunas tablas, con lo que al realizar la paginación de 10 en 10 registros me encuentro con que son alrededor de unas 30 páginas y si hasta ahora la paginación se presentaba de la siguiente manera:

< Anterior 1 2 3 4 5 6 Siguiente >

Con 30 páginas se rompe la estetica del CMS y la usabilidad del mismo, por lo que he realizado las siguientes modificaciones sobre el código para no mostrar enlaces a todas las páginas de la tabla, mostrando solo 4 paginas por encima y por debajo de la que nos encontramos quedando así:

<< Inicio < Anterior 1 ... 18 19 20 21 22 23 24 25 26 … 50 Siguiente > Final >>


//necesitamos primero sacar el valor de pagina por metodo get (URL) y pasarlo a $pagina
//$total_registros lo obtenemos del total de registro de la consulta SQL que se ha realizado
if($total_registros) {
//botones de inicio y anterior comprobamos si $pagina no es la 1 para mostrarlos o no
if(($pagina - 1) > 0) {
echo '<< Inicio ';
echo ' < Anterior ';
}
//si $pagina es mayor que 4, que es el margen que vamos a dejar por encima y debajo, mostramos la primera para poder acceder a ella
if ($pagina-4 > 1)
echo '1 ... ';

//Paginacion de pagina -4 a pagina +4, calculamos la pagina de inicio y fin que son 4 por encima y debajo
if ($pagina > 4) $pag_inicio = $pagina-4;
else $pag_inicio = 1;
if ($pagina <= $total_paginas-4) $pag_fin = $pagina+4;
else $pag_fin = $total_paginas;
//mostramos todas las páginas
for ($i=$pag_inicio; $i<=$pag_fin; $i++){
//si es en la que estamos no tiene enlace y aparece en negrita
if ($pagina == $i) {
echo ''.$pagina.' ';
} else {
echo ''.$i.' ';
}
}

//Paginacion final, mostramos la última para poder acceder a ella
if ($pagina + 4 < $total_paginas)
echo ' ... '.$total_paginas.' ';

//Botones de siguiente y final
if(($pagina + 1)<=$total_paginas) {
echo 'Siguiente >';
echo ' Final >>';
}

echo '

';

}
?>

Quieres continuar blogueando por 1000io.com?? Si | No

O... ayudanos a mejorar!!

Deje un comentario