Foros del Web » Programando para Internet » PHP »

[APORTE] Limitar paginación con PHP

Estas en el tema de [APORTE] Limitar paginación con PHP en el foro de PHP en Foros del Web. Buenas... les dejo cómo utilice una clase dada en este sitio para paginar y limitar la cantidad de enlaces. El problema no es paginar, sino ...
  #1 (permalink)  
Antiguo 27/10/2014, 12:30
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
[APORTE] Limitar paginación con PHP

Buenas... les dejo cómo utilice una clase dada en este sitio para paginar y limitar la cantidad de enlaces.

El problema no es paginar, sino que no explica como traer los resultados paginados, cosa que le agrego. En este primer caso utilizo la libreria mysql de php, y más abajo con PDO

FUENTE: http://objetivophp.com/?p=183

Descargar los archivos. Se puede utilizar alguno de los estilos ya dados en la misma carpeta.

Ejemplo con librería Mysql:

Código PHP:
<?php 
//incluimos nuestra conexion
include("../../../link/connect.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="estilosPaginador/digg.css" type="text/css" rel="stylesheet"></link>
<title>BUSCADOR FULLTEXT + PAGINADOR</title>
</head>
<body>
    <?php
    
// en esta parte traemos todos los resultados para mostrar
    // en este caso queremos mostrar 10 registros por página, por tanto
    // es importante que enla variable $cantidadRegistrosPorPagina si esta en 10
    // los valores de $start_from y en el LIMIT de SQL tambien esten en 10

    
if (isset($_GET["pagina"])) { $pagina $_GET["pagina"]; } else { $pagina=0; }; 
    
$start_from = ($pagina) * 10;
    
$sql="SELECT * FROM productos_disponibles ORDER BY productoDisponible ASC LIMIT $start_from, 10";
    
$q=mysql_query($sql,$conn) or die(mysql_error());
    while(
$rmysql_fetch_array($q)){
        echo 
"<p>".$r['productoDisponible']."</p>";
    }

    
// PAGINADOR EN SI, muy similar, solo que le pasamos
    // los parametros a la clase Paginador();
    
    // Consulta para paginar
    
$sql_prod="SELECT * FROM productos_disponibles";
    
$query=mysql_query($sql_prod,$conn) or die(mysql_error());
    
$num_prodmysql_num_rows($query);
    
    
// Parametros a ser usados por el Paginador.
    
$cantidadRegistrosPorPagina    10;
    
$cantidadEnlaces            10// Cantidad de enlaces que tendra el paginador.
    
$totalRegistros             $num_prod;
    
    
    
// Comenzamos incluyendo el Paginador.
    
require_once 'Paginador.php';
    
    
// Instanciamos la clase Paginador
    
$paginador = new Paginador();

    
// Configuramos cuanto registros por pagina que debe ser igual a el limit de la consulta mysql
    
$paginador->setCantidadRegistros($cantidadRegistrosPorPagina);
    
// Cantidad de enlaces del paginador sin contar los no numericos.
    
$paginador->setCantidadEnlaces($cantidadEnlaces);
    
    
// Agregamos estilos al Paginador
    
$paginador->setClass('primero',         'previous');
    
$paginador->setClass('bloqueAnterior',  'previous');
    
$paginador->setClass('anterior',        'previous');
    
$paginador->setClass('siguiente',       'next');
    
$paginador->setClass('bloqueSiguiente''next');
    
$paginador->setClass('ultimo',          'next');
    
$paginador->setClass('numero',          '<>');
    
$paginador->setClass('actual',          'active');
    
    
// Y mandamos a paginar desde la pagina actual y le pasamos tambien el total
    // de registros de la consulta mysql.
    
$datos $paginador->paginar($pagina$totalRegistros);
    
    
// Preguntamos si retorno algo, si retorno paginamos. Nos retorna un arreglo
    // que se puede usar para paginar del modo clasico. Si queremos paginar con
    // el enlace ya confeccionado realizamos lo siguiente.
    
if ($datos) {
        
$enlaces $paginador->getHtmlPaginacion('pagina''li');
    
?>
    <ul id="pagination-digg">
    <?php
        
foreach ($enlaces as $enlace) {
            echo 
$enlace "\n";
        }
    
?>
    </ul>
    <br /><br />
    <?php
    
}
    
?>
</body>
</html>
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #2 (permalink)  
Antiguo 27/10/2014, 12:33
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: [APORTE] Limitar paginación con PHP

Esta sección es igual a la anterior pero utilizando la Librería PDO para php.. solo que modifico la cantidad de registros a mostrar por 25, y la cantidad de enlaces los dejo en 8.

Código PHP:
<?php include("../link/conn-mus.php");?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="estilosPaginador/digg.css" type="text/css" rel="stylesheet"></link>
<title>BUSCADOR FULLTEXT + PAGINADOR</title>
</head>
<body>
    <?php
    
    
if (isset($_GET["pagina"])) { $pagina $_GET["pagina"]; } else { $pagina=0; }; 
    
$start_from = ($pagina) * 25;
    
$sql="SELECT * FROM productos LIMIT $start_from, 25";
    
$q $dbcon->prepare($sql);
    
$q->execute();
    for(
$i=0$row $q->fetch(); $i++){
        echo 
"<p>".$row['producto']."</p>";
    }


    
$sql_prod="SELECT * FROM productos";
    
$query $dbcon->prepare($sql_prod);
    
$query->execute();
    
$num_res=$query->rowCount();
    
    
// Parametros a ser usados por el Paginador.
    
$cantidadRegistrosPorPagina    25;
    
$cantidadEnlaces            8// Cantidad de enlaces que tendra el paginador.
    
$totalRegistros             $num_res;
    
    
    
// Comenzamos incluyendo el Paginador.
    
require_once 'Paginador.php';
    
    
// Instanciamos la clase Paginador
    
$paginador = new Paginador();

    
// Configuramos cuanto registros por pagina que debe ser igual a el limit de la consulta mysql
    
$paginador->setCantidadRegistros($cantidadRegistrosPorPagina);
    
// Cantidad de enlaces del paginador sin contar los no numericos.
    
$paginador->setCantidadEnlaces($cantidadEnlaces);
    
    
// Agregamos estilos al Paginador
    
$paginador->setClass('primero',         'previous');
    
$paginador->setClass('bloqueAnterior',  'previous');
    
$paginador->setClass('anterior',        'previous');
    
$paginador->setClass('siguiente',       'next');
    
$paginador->setClass('bloqueSiguiente''next');
    
$paginador->setClass('ultimo',          'next');
    
$paginador->setClass('numero',          '<>');
    
$paginador->setClass('actual',          'active');
    
    
// Y mandamos a paginar desde la pagina actual y le pasamos tambien el total
    // de registros de la consulta mysql.
    
$datos $paginador->paginar($pagina$totalRegistros);
    
    
// Preguntamos si retorno algo, si retorno paginamos. Nos retorna un arreglo
    // que se puede usar para paginar del modo clasico. Si queremos paginar con
    // el enlace ya confeccionado realizamos lo siguiente.
    
if ($datos) {
        
$enlaces $paginador->getHtmlPaginacion('pagina''li');
    
?>
    <ul id="pagination-digg">
    <?php
        
foreach ($enlaces as $enlace) {
            echo 
$enlace "\n";
        }
    
?>
    </ul>
    <br /><br />
    <?php
    
}
    
?>
</body>
</html>
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...

Etiquetas: html, limitar, mysql, registro, select, sql, variable
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 04:37.