Foros del Web » Programando para Internet » PHP »

Paginacion en PHP

Estas en el tema de Paginacion en PHP en el foro de PHP en Foros del Web. Buenas tardes. Quiero hacer mi pequeño aporte, tanto a la comunidad de forosdelweb.com, como a todos los lectores. Cuando trabajamos con PHP, es inevitable que ...
  #1 (permalink)  
Antiguo 14/04/2010, 10:45
 
Fecha de Ingreso: marzo-2010
Ubicación: Buenos Aires
Mensajes: 59
Antigüedad: 11 años, 1 mes
Puntos: 2
Paginacion en PHP

Buenas tardes. Quiero hacer mi pequeño aporte, tanto a la comunidad de forosdelweb.com, como a todos los lectores.

Cuando trabajamos con PHP, es inevitable que en algun momento necesitemos acceder y operar con una base de datos. Muchas veces, tenemos una gran cantidad de registros para mostrar. Y, por diferentes motivos (rendimiento, profesionalidad, etc.) no queremos mostrarlos todos en la misma pagina.

Por ese motivo, les dejo un pequeño script para paginar resultados provenientes de una consulta a una base de datos, para quien le pueda interesar.

Nota: seguramente, el script se puede mejorar mucho. Asique todas las sugerencias y criticas constructivas, seran bienvenidas.

Hasta luego.



Código PHP:
<?php
/*
Script desarrollado por Julisho

Este script sirve para paginar resultados provenientes de una consulta a una base de datos. Hay que indicar la cantidad de resultados por pagina, el total de registros, la url de destino, y el conjunto parametro=valor (todos los que hagan falta). Los parametros se pasan por URL.

La forma de especificar los valores necesarios, es mediante un array: $PAGINACION[], que debe prepararse antes de incluir el archivo.

Para indicar la cantidad de resultados por pagina:     $PAGINACION['resultados']
Para indicar el total de registros:                 $PAGINACION['total_registros']
Para indicar la url de destino:                     $PAGINACION['url_destino']
Para indicar un parametro y un valor:                $PAGINACION['parametros']['parametro'] = "valor";

Debe realizarse una consulta a la base de datos, sin procesar los resultados. El script añadira los limites. Por ejemplo:

<?php
    // conexion a la base de datos

    //preparamos la consulta
    $query = 'select nombre from usuarios order by nombre';    //supongamos que son 41 registros

    //ejecutamos la consulta
    $consulta = mysql_query($query, $conexion);

    //creamos el array $PAGINACION
    $PAGINACION = array();

    //asignamos los valores necesarios
    $PAGINACION['total_registros'] = mysql_num_rows($consulta);
    $PAGINACION['url_destino'] = "index.php";
    $PAGINACION['resultados'] = 15;

    //Recuerda que se pueden crear tantos pares parametro=valor como sea necesario
    $PAGINACION['parametros']['obj'] = "busqueda";
    $PAGINACION['parametros']['opt'] = "nombre";

    //llamamos al archivo de paginacion
    require_once("paginacion.php");

    //ejecutamos nuevamente la consulta. Esta vez, estaran establecidos los limites. Nuestra consulta, ahora, estara asi:
    //$query = 'select nombre from usuarios order by nombre limit 1, 15'; // para la primera pagina
    //$query = 'select nombre from usuarios order by nombre limit 16, 31'; // para la segunda pagina
    //$query = 'select nombre from usuarios order by nombre limit 32, 47'; // para la tercera pagina
    //y asi sucesivamente
    $consulta = mysql_query($query, $conexion);

    //luego de esto, puedes organizar los resultados como mejor se ajuste a tu pagina.

    ?>
*/
if (isset($_GET['pagina'])) { $pagina $_GET['pagina']; }
else { 
$pagina 1; }
$inicio = ($pagina 1) * $PAGINACION['resultados'];
$total_paginas ceil($PAGINACION['total_registros'] / $PAGINACION['resultados']);                
?>                
<p class="_paginacion">
<span class="izquierda">Resultados: <?php echo $PAGINACION['total_registros']; ?></span>
<span class="centro">Paginas: <?php echo $total_paginas?></span>
<span class="derecha">Resultados por pagina: <?php echo $PAGINACION['resultados']; ?></span>
</p>
<?php
echo '<p id="paginacion">';

if (
$pagina 1)
{
$salida '<span class="izquierda">';

$salida .= "<a href=\"" $PAGINACION['url_destino'] . "?";
foreach(
$PAGINACION['parametros'] as $parametro => $valor)
{
$salida .=  "$parametro=$valor&";
}
$salida .= "pagina=".($pagina-1)."\">< Anterior</a>";

$salida .= " | ";

$salida .= '<a href="' $PAGINACION['url_destino'] . '?';
foreach(
$PAGINACION['parametros'] as $parametro => $valor)
{
$salida .=  "$parametro=$valor&";
}
$salida .= "pagina=1\">Inicio</a>";

$salida .= "</span>";


echo 
$salida;
}
elseif (
$pagina <= 1)
{
echo 
'<span class="izquierda">< Anterior | Inicio</span>';
}
echo 
'<span class="centro">Pagina: ' $pagina "\n";

echo 
'</span>' "\n";

if (
$pagina $total_paginas)
{
$salida '<span class="derecha"><a href="' $PAGINACION['url_destino'] . '?';
foreach(
$PAGINACION['parametros'] as $parametro => $valor)
{
$salida .=  "$parametro=$valor&";
}
$salida .= "pagina=$total_paginas\">Final</a> | <a href=\"" $PAGINACION['url_destino'] . "?";
foreach(
$PAGINACION['parametros'] as $parametro => $valor)
{
$salida .=  "$parametro=$valor&";
}
$salida .= "pagina=".($pagina+1)."\">Siguiente ></a></span>";
echo 
$salida;
}
elseif (
$pagina >= $total_paginas)
{
echo 
'<span class="derecha">Final | Siguiente ></span>';
}
echo 
'</p>' "\n";
$query .= ' limit ' $inicio ', ' $PAGINACION['resultados'];
?>
  #2 (permalink)  
Antiguo 14/04/2010, 12:02
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 17 años, 5 meses
Puntos: 89
Respuesta: Paginacion en PHP

Muchas gracias por el aporte.

Te aconsejo que al título le antepongas un [Aporte], para que se pueda identificar.

__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.

Etiquetas: mysql, paginacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:02.