viernes, 13 de marzo de 2015

Paginar resultados de mysql con zebra paginator

Buenas, hoy recorde despues de mucho tiempo esta libreria simple, ya que un amigo por skype se le dificultaba un poco la paginacion y con esta libreria simple y precisa podemos realizar este proceso rapidamente. 

Anteriormente habia hecho una entrada en este mismo blog sobre como realizar la paginacion de manera estructurada. 

Hoy vengo a presentarles la libreria Zebra Paginator la cual nos generará los links de paginacion casi de manera automatica, solo necesitaremos el archivo siguiente: https://raw.githubusercontent.com/stefangabos/Zebra_Pagination/master/Zebra_Pagination.php


Aqui algunas de las propiedades, metodos que tendremos que configurar, ademas sobre algunas funciones de MySQL no muy conocidas.

get_page() - Este metodo retorna el numero de paginas actuales

records() - Establece el numero total de registros que deben ser paginados.

records_per_page() - Establece el numero de registros que se muestran en una sola pagina.

render() - Genera la salida. 

SQL_CALC_FOUND_ROWS - Calcula el numero de resultados de una consulta sin LIMIT.

FOUND_ROWS() - obtiene el resultado del ultimo SQL_CALC_FOUND_ROWS ejecutado.

Hay cuatro propiedades que se cambian muy usualmente en la libreria las cuales son:

* next - esta muestra el texto a salida. Ejemplo: Siguiente
* previous - esta muestra el texto a salida. Ejemplo: Anterior
* variable_name - Es la variable que sera usada. Ejemplo: pagina
* method - Es el metodo por el cual se enviara GET o POST

Un ejemplo basico de paginacion seria el siguiente, el cual es algo generico ya que usamos la base de datos information_schema para que no tengas que crear una base de datos en este ejemplo:



 <title>Paginacion</title>
<style type="text/css">
    .Zebra_Pagination li {
        list-style-type: none;
        display: inline;
        padding-right: 5px;
    }

</style>
<?php
$con = mysqli_connect('localhost','root','','information_schema') or die(mysqli_error());
// cuanto registros seran mostrados por pagina
$records_per_page = 10;

// incluimos la clase
require 'Zebra_Pagination.php';

// instanciamos el objeto zebra paginator
$pagination = new Zebra_Pagination();

// la declaracion mysql para devolver registros
// nota como creamos el limit
// tambien, nota el  "SQL_CALC_FOUND_ROWS"
// esto es para obtener el número de filas que han sido devueltos si no había LIMIT
// mira mas http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows
$MySQL = '
    SELECT
        SQL_CALC_FOUND_ROWS
        *
    FROM
        tables
    LIMIT
        ' . (($pagination->get_page() - 1) * $records_per_page) . ', ' . $records_per_page . '
';

// si la consulta no se pudo ejecutar
if (!($result = @mysqli_query($con,$MySQL))) {

    // dejamos un mensaje de error
    die(mysqli_error($con));

}

// arrojamos el numero de registros totales de la tabla
$rows = mysqli_fetch_assoc(mysqli_query($con,'SELECT FOUND_ROWS() AS rows'));

// pasamos el numero total de registros a la clase pagination
$pagination->records($rows['rows']);

// registros por pagina
$pagination->records_per_page($records_per_page);

?>

<table class="countries" border="1">

    <tr><th>Prueba</th></tr>


    <?php while ($row = mysqli_fetch_assoc($result)):?>

    <tr>
        <td><?php echo $row['TABLE_NAME']; ?></td>
    </tr>

    <?php endwhile?>

</table>

<?php

// Da salida a los enlaces de paginacion
$pagination->render();

?>







 

Hay cosas que no tomo muy en cuenta a explicar como son la instancia del objeto Zebra Paginator, incluir la libreria, mostrar estilos de salida, o reaizar las peticiones en la db, lo que les recomendaria es checar la libreria desde Github obteniendo muchos ejemplos, es una libreria muy limpia, y contiene muchos ejemplos, esto es todo saludos!

No hay comentarios:

Publicar un comentario en la entrada