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!