Espero que te sirva este codigo que use en una pagina mia...
Código PHP:
$cantidad =; //Numero de resultados totales
$pages =; //Numero de paginas totales
//CALCULAMOS LA VARIBALE INICIAL Y FINAL:
$margin = floor($cantidad/2);
//si se cunple vamos a tener que ir desplazando inicial.
if ($pages >= $cantidad){
//vamos moviendo inicial si llegamos a la mitad de la paginacion.
$start = $_GET["pg"] - $margin;
//si sobrepasamos el margen y estamos en el limite mostramos tantas paginas como $limit.
if ($_GET["pg"] > ($pages - $margin)) { $start = $pages - $cantidad; }
}else {$start = 1;}
//si estamos por debajo del margen la inicial siempre 1.
if ($_GET["pg"] <= $margin){ $start = 0;}
//si sobrepasamos total_paginas --> final = total_paginas.
$end = $start + ($cantidad); if ($end >= $pages){$end = $pages;}
// Definimos objetos: siguiente-previo
if($start > 1){$objeto_previo = "<b>Anterior</b>";}
if($end < $pages){$objeto_final = "<b>Siguiente</b>";}
// Imprimimos los calculos
$paginacion .= "Páginas Totales ($pages)<br /><br />";
// Imprimimos objeto inicial
$ant = $_GET["pg"] - 1;
if($ant > $start){
$paginacion .= "<a href='".$dir."/pagina-".$ant.".php' class='objeto'>".$objeto_previo."</a>";
}
// Creamos el bucle e imprimimos los resultados
for($x = $start; $x <= $end; $x++){
// Se nos presentan dos casos
// Caso 1 - Pagina actual
if($_GET["pg"] == $x){
$paginacion .= "<a href='".$dir."/pagina-".$x.".php' class='selected'>".$x."</a>";
}else{
$paginacion .= "<a href='".$dir."/pagina-".$x.".php'>".$x."</a>";
}
}
// Imprimimos objeto final
$end = $_GET["pg"] + 1;
if($end > $start){
$paginacion .= "<a href='".$dir."/pagina-".$end.".php' class='objeto'>".$objeto_final."</a>";
}
Un saludo y espero que sea lo que buscas
Se me olvidaba... para mostrar la paginación <?=$paginacion ?>