Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/05/2011, 17:04
Avatar de Sourcegeek
Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años
Puntos: 322
Aporte: Clase para paginación básica

Buenas! Estaba viendo que hay mucha gente que aún no comprende bien esto de la paginación, por lo que hice una clase para que de manera sencilla puedan lograrlo además de que pueden hecharle una leída al código que no es muy extenso para tener una noción respecto a la paginación. Sin más que decir, pongo el código de la clase:
Código PHP:
<?php
/* Clase para paginar resultados. Por Sourcegeek para FDW */
class PagClass {
    
/* Variables internas */
    
var $connection;
    var 
$result;
    var 
$query;
    var 
$regpp;
    var 
$pag;
    
/* Crear conexion a Mysql */
    
public function Connect($a$b$c$d) {
        if (!
$this->connection mysql_connect($a$b$c)) {
            echo 
'Error al conectar con mysql';
            return 
false;
        }
        
$this->SelDB($d);
    }
    
/* Seleccionar la db */
    
private function SelDB($db) {
        if (!
mysql_select_db($db)) {
            echo 
'Error al seleccionar db';
            return 
false;
        }
        return 
true;
    }
    
/* Preparar informacion */
    
public function info($regpp$pag$query) {
        if (!
$pag) {
            
$inicio 0$pag 1;
        }else{
            
$inicio = ($pag 1) * $regpp;
        }
        
$this->pag $pag;
        
$this->regpp $regpp;
        
$this->query mysql_query($query);
        
$this->result mysql_query($query." LIMIT $inicio,$regpp");
    }
    
/* Enviar informacion */
    
public function result() {
        return 
$this->result;
    }
    
/* Pagina anterior */
    
public function ant($txt) {
        if ((
$this->pag 1) > 0) {
            return 
'<a href="?pag='.($this->pag 1).'">'.$txt.'</a>';
        }
    }
    
/* Pagina siguiente */
    
public function sig($txt) {
        
$q mysql_num_rows($this->query);
        
$pagtot ceil($q $this->regpp);
        if ((
$this->pag 1) <= $pagtot) {
            return 
'<a href="?pag='.($this->pag 1).'">'.$txt.'</a>';
        }
    }
}
?>
Ahora, el uso básico de está es más o menos así:
Código PHP:
<?php
// Incluimos la clase de paginacion y creamos nuevo objeto
include('pag.class.php');
$v = new PagClass();

// Abrimos una conexion y establecemos registros por pagina
$v->Connect('localhost''Usuario''Contrasena''BD');
$rpp 4;

// Var de pagina actual. Para que funcionen los links de navegacion,
// debe ser $_GET['pag']
$pa $_GET['pag'];

// La query que deseamos. Atencion de NO usar limit
$query "SELECT * FROM ejemplo ORDER BY hora DESC";

// Enviamos los datos y preparamos la informacion
$v->info($rpp$pa$query);

// Obtenemos la informacion y la mostramos
while ($result mysql_fetch_assoc($v->result)) {
    echo 
"<b>Nombre:</b> {$result['nombre']}";
    echo 
'<hr size="3"></hr>';
}

// Link a pagina anterior, siguiente y mostramos pagina actual
echo $v->ant('Anterior').' | ';
echo 
$v->sig('Siguiente');
echo 
'<br /><br /><br />';
echo 
'Pagina actual: '.$pa;
?>
Como verán el uso es muy sencillo, perfecto para aquellos que entran al mundo de PHP OOP y la paginación.
Se agradecen comentarios, sugerencias y demás.

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies