La paginación es un elemento muy importante para mejorar la navegación en foros, comentarios, links etc... separando sus elementos en páginas (Valga la rebuznancia). Siempre es mejor hacer varias páginas para los temas de un foro, por ejemplo. Se reducen los tiempos de carga y se ve todo muy bonito :-P
Para cumplir con esta complicada (¿0_o?) misión, he desarrollado esta función que puede adaptarse en todos lados. Lo que hace es crear los links HTML hacia las páginas que estén antes o después de la actual. Si nos encontramos en
mipag.com?pag1, donde la variable $_GET[‘pag’] indica en que página estamos, la función creará links hacia las páginas siguientes (o anteriores)
mipag.com?pag3 etc... Ya nosotros en nuestros scripts haremos que la variable $_GET[‘pag’] haga “algo” ¬_¬. Como dije, esta función lo único que hace es generar links. La función es la siguiente:
function paginar($pag, $pp){
/* Función que regresa un formato HTML con links hacia si misma con un valor GET de
páginas siguientes y anteriores a partir de la especificada den $pag.*/
//Limpiamos otras especificaciones GET en la URL.
$url = "$_SERVER[PHP_SELF]?$_SERVER[QUERY_STRING]";
$url = ereg_replace("&pag=[0-9]+", "", $url);
$indice = "Página: $pag de $pp | Ir a pagina: ";
//Páginas antes de la actual
$m = 4; //Margen de páginas que se mostrarán antes de la actual (Puedes cambiarlo como te convenga).
//Si el margen de páginas hacia atras entra en páginas que no existen (0, -1, etc...) ajustarlo.
while($pag-$m < 1){
$m--;
}
//Si el margen de las páginas hacia atras no empieza en la primera, poner un link a esta.
if($pag-$m > 1){
$indice .= "Primera...";
}
//Si hay una página anterior, poner un link a "Anterior"
$ante = $pag - 1;
if($ante >= 1){
$indice .= "«";
}
//Formamos los links a las páginas anteriores según lo especificado.
//El for() empieza en la primera página de atras hacia adelante hasta la penúltima.
for($i=$pag-$m; $i $pp){
$f--;
}
//Formamos los links a las páginas siguintes según lo especificado.
//El for() empieza en la página siguiente a la actual y avanza asta lo que marque el márgen.
for($i=$pag+1; $i
La función tiene dos argumentos; $pag es la página actual, osease, la que se mostró al usuario. Y $pp es el número total de páginas que existen, esta variable la calculamos según nuestra conveniencia. Como puedes ver, la función siempre creará links hacia la misma página de donde es llamada.
De tal forma que lo único que tenemos que hacer es pasar los datos a la función y recibir la cadena de texto.
Así, ya tenemos en la variable con los links que especifiquemos, y dichos links los ponemos donde queramos, por ejemplo, en la esquina superior derecha de la tabla que muestra los temas en un foro.