Bien, quiero compartir este sistema de paginacion que es muy profesional y que no tiene mucho codigo. Lo que me llevo a hacerlo es que encontre muchos sistemas bastante parecidos, pero ninguno era eficiente a la hora de mostrar los enlaces. Por eso lo programe dejandolo simple y profesional para que cualquiera pueda usarlo. El sistema cuenta con un boton para pasar siguiente, anterior, pasar una pagina y retroceder una pagina. En fin, pueden verlo en accion
aqui. Lo dejare alojado ahi para que cualquiera en un futuro que lo requiera pueda ver como funciona.
Código PHP:
Ver original<?
//archivos necesarios
require_once 'config.php';
require_once 'conexion.php';
// obtengo puntero de conexion con la db
$dbConn = conectar();
// Contamos la cantidad de registros que hay
// Declaramos la cantidad de registros a mostrar por pagina
$registros = 1;
// Declaramos la pagina seleccionada por el usuario
$pagina = $_GET["pagina"];
// $inicio indica a partir de que registro se muestra la consulta
$inicio = 0;
$pagina=1;
}
else {
$inicio = ($pagina - 1) * $registros;
}
// Traemos los resultados a mostrar por cada pagina seleccionada
}
// Calculamos el total de paginas a mostrar
$total_paginas = ceil($total_registros / $registros);
/* El sistema esta programado para ver paginas de 10 en 10 de la siguiente manera:
1 2 3 4 5 6 7 8 9 10 y al pasar una pagina se vera 11 12 13 14 15 16 17 18 19 20 y asi
sucesivamente hasta llegar al final de paginas encontradas. (cada uno obviamente puede
modificarlo adaptandolo a sus necesidades). */
// Calculamos $fin y luego $enlace_fin para despues saber el tamaño de enlaces a mostrar
$j=10;
for ($fin=1; $fin<$j ;$fin+=1){
for ($j=10; $j<$pagina; $j+=10)
{}}
$enlace_fin = $fin - $pagina;
// Calculamos el boton para avanzar a la pagina siguiente
$j=10;
for ($sigpag=1; $sigpag<$j ;$sigpag+=10){
for ($j=10; $j<$pagina; $j+=10)
{}}
// Calculamos el boton para retroceder a la pagina anterior
$j=21;
for ($antpag=0; $antpag<=$j-20;$antpag+=1){
for ($j=10; $j<$pagina; $j+=10)
{}}
// Calculamos el numero en el cual nos paramos para empezar a paginar
$j=11;
for ($ini=0; $ini<=$j-10;$ini+=1){
for ($j=10; $j<$pagina; $j+=10)
{}}
?>
Luego en el body iria esto:
Código PHP:
Ver original<div id="paginacion">
<?
if($total_registros) {
if($pagina>1) {?>
<div id="anterior"><? echo "<a href='index.php?pagina=".($pagina-1)."'>« Anterior</a> ";?></div><?
}
if($pagina>10) {?>
<div id="antpag"> <? echo " <a href='index.php?pagina=".($antpag)."'>«</a>";?> </div><?
}
for ($i=$ini; $i<=$enlace_fin+$pagina and $i<=$total_paginas; $i++){
if ($i == $pagina){?>
<div id="noselect"><? echo "<b>".$i."</b> ";}
else {
?> <div id="numero"> <? echo "<a href='index.php?pagina=$i'>$i</a> "; }?> </div>
<? } if($ini <= $total_paginas) {?>
<div id="sigpag"> <? echo " <a href='index.php?pagina=".($sigpag)."'>»</a>";?> </div><?
}
if($pagina < $total_paginas) {?>
<div id="siguiente"> <? echo " <a href='index.php?pagina=".($pagina+1)."'>Siguiente »</a>";?> </div><?
}
}
?>
</div>
Archivo conexion:
Código PHP:
Ver original<?php
function conectar () {
if (!$db_con) return false;
return $db_con;
}
?>
Archivo config:
Código PHP:
Ver original<?php
// constantes de conexion de db
define( 'DB_SERVER', 'tuserver' ); define( 'DB_NAME', 'nombre_db'); define( 'DB_USER', 'nombre_user'); define( 'DB_PASS', 'tupassword');
?>