Un simple paginador

06.abr 2005 Envía un trackback

A veces nos complicamos demasiado para dar una la solución acertada (que no única). Tampoco afirmo que sea la más correcta, pero con una función de 15 lineas podemos tener un paginador en condiciones. A esta función solo hay que pasarle unos cuantos parámetros:

/* Parámetros:
1.- Objeto para la conexión a base de datos y obtener el máximo nº de registros a paginar
2.- Tabla en la que hacer la consulta, puesto que será válido para diversas páginas
3.- Número de registros por página
4.- Numero de inicio (primer nº del LIMIT), no hace falta variar
5.- Página a la que enlazamos los símbolos << y >>.
*/

function pager($page_object, $table, $n_per_page, $n_start, $link)
{
$result_log=$page_object->get_data("SELECT COUNT(*) as MAXI FROM $table");
$n_max_from=$result_log[0][MAXI]-$n_per_page;
if($n_start=="0") $anterior="<span class="gris">«</span>";
if($n_start != '0' && $n_start%$n_per_page==0) {$n_start2=$n_start-$n_per_page; $anterior="<a href="$link&amp;from={$n_start2}">«</a>";}
if($n_start==$n_max_from) $siguiente="<span class="gris">»</span>";
if($n_start+$n_per_page >= $result_log[0][MAXI]) $siguiente="<span class="gris">»</span>";
else {$n_start2=$n_start+$n_per_page; $siguiente="<a href="$link&amp;from={$n_start2}">»</a>";}
$arr = array ($anterior, $siguiente); return $arr;
}

La llamada a la función sería algo así:

<?php
$n_per_page="20";
if(!isset($from)) {$n_start="0";} else {$n_start=$from;}
$array_pager=$view_object->pager($page_object, "usuarios", $n_per_page, $n_start, "usu.php");
?>

Devuelve un array con 2 valores, los enlaces a anterior y siguiente en caso de existir. Por lo tanto, para colocar el resultado en la página:

<?php echo $array_pager[0]; ?> anterior | siguiente <?php echo $array_pager[1]; ?>

Y tendríamos el paginador listo para funcionar.


Comentarios
Gravatar coder@07.04.2005, 'odio meter html en php'

Desde que el amigo HnZeKtO me metió por el buen camino y no he salido xD, pero claro, los paginadores son caso concreto a analizar. Está claro que la propuesta que haces es buena y corta.


Escribe tu comentario
 
 
Guardar datos
Escribe tu comentario:
captcha


Intenta que tu comentario sea interesante y con información relevante al tema de la entrada. BBCodes disponibles: [url=http://direccion]texto[/url], negrita: [b]texto[/b], itálica: [i]texto[/i], subrayada: [u]texto[/u]. Para mencionar o citar a alguien (quote): [cita]texto[/cita]