Código PHP:
/**
* Retorna el indice dentro del Result Set del primer
* elemento de la página actual.
*
* @since 26/02/2002 12:00:12 p.m.
* @return
**/
function desde()
{
return (($this->pagina()-1)*$this->porPagina())+1;
} // function
/**
* Retorna el índice dentro del Result Set del último
* elemento de la página actual.
*
* @since 26/02/2002 12:18:08 p.m.
* @return
**/
function hasta()
{
return ($this->desde()-1)+$this->registros();
} // function
/**
* Ejecuta el Query el base, averiguando previamente la cantidad total de
* registros que devuelve la consulta
*
* @access public
* @since 25/02/2002 05:31:59 p.m.
**/
function query($query)
{
// Primero modificamos el query para averiguar la cantidad total
// de registros que devuelve el query.
$query_count = eregi_replace("select (.*) from", "SELECT COUNT(*) FROM",$query);
if(!$this->rs( @mysql_query($query_count, $this->conn()) ))
{
$this->error("Ocurrió un error al ejecutar el query <i><b>\"$query_count\"</b></i>. La base dijo : <b>".mysql_error()."</b>.");
return false;
}// Fin If
$this->total( mysql_result($this->rs(), 0) );
$this->totalPaginas(ceil($this->total() / $this->porPagina()));
// Comprobamos que no se intenta acceder a una página que no existe.
if( $this->pagina() > $this->totalPaginas() )
{
$this->error("No exite la página ".$this->pagina()." de resutados. Hay solo un total de ".$this->totalPaginas());
return false;
}// Fin If
// Ahora modificamos el Query del usuario, para poder agregarle
// los límites para realizar la paginación
$query .= " LIMIT ".($this->desde()-1).",".$this->porPagina();
if(!$this->rs( @mysql_query($query, $this->conn()) ))
{
$this->error("Ocurrió un error al ejecutar el query \"$query\". La base dijo : ".mysql_error());
return false;
}// Fin If
$this->registros( mysql_num_rows( $this->rs() ));
return true;
} // function
/**
* Retorna un Array asociativo con los datos del siguiente
* registro dentro del Result Set.
*
* @since 26/02/2002 11:21:46 a.m.
* @return
**/
function obtenerArray()
{
return mysql_fetch_array( $this->rs() );
} // function
/**
* Despliega el link hacia la siguiente página
*
* Siempre que quede una página siguiente, se muestra un link
* hacia la siguiente página de resultados.
* El método acepta ser llamado con un parámetro que contenga el
* código HTML que representará al link y que pueda ser representado
* encerrado dentro de un tag <A>.
* @access public
* @since 26/02/2002 01:49:29 p.m.
**/
function siguiente()
{
switch (func_num_args())
{
case 1:
$this->_siguiente = func_get_arg(0);
default:
if($this->hasta() < $this->total())
{
return "<td><a href=\"?pagina=".($this->pagina()+1).$this->propagar()."\">".$this->_siguiente."</a></td>";
}// Fin If
break;
}
} // function
/**
* Despliega el link hacia la página anterior.
*
* Siempre que no estemos en la primer página, se muestra un link
* hacia la página anterior de resultados.
* El método acepta ser sllamado con un parámetro que contenga el
* código HTML que representará al link y que pueda ser representado
* encerrado dentro de un tag <A>.
* @access public
* @since 26/02/2002 01:49:29 p.m.
**/
function anterior()
{
switch (func_num_args())
{
case 1:
$this->_anterior = func_get_arg(0);
default:
if($this->pagina() != 1)
{
return "<td><a href=\"?pagina=".($this->pagina()-1).$this->propagar()."\">".$this->_anterior."</a></td>";
}// Fin If
break;
}
} // function
/**
* Despliega los números de páginas posibles
*
* Este método muestra una lista de todas las páginas posibles como
* links, excepto la página actual, que se encuentra sin link y resaltada
* en negrita.
* @since 26/02/2002 02:15:36 p.m.
* @return
**/
function nroPaginas()
{
for($i = 1; $i <= $this->totalPaginas() ; $i++)
{
$temp[$i] = "<td bgcolor='#F3F3F3' style='border: 1px solid #808080'><a href=\"?pagina=$i".$this->propagar()."\">$i</a></td>";
} // for
$temp[$this->pagina()] = "<td bgcolor='#F3F3F3' style='border: 1px solid #808080'><b>".$this->pagina()."</b></td>";
return implode(" ", $temp);
} // function
/**
* Indica que variables se desean propagar en los links.
*
* Este metodo recibe una lista de nombres que son guarados internamente
* hasta que son creados los links para navegar los resultados. En ese
* momento, son agregados los nombres de las variables con sus valores
* para que puedan ser propagados.
* @since 26/02/2002 02:15:36 p.m.
* @return
**/
function propagar()
{
switch(func_num_args()){
case 0:
foreach($this->_variables as $var)
$ret.= "&$var=".$GLOBALS[$var];
return $ret;
break;
default:
for($i = 0; $i < func_num_args(); $i++)
{
$this->_variables[] = func_get_arg($i);
} // for
break;
} // switch
} // function
} // end of class
?>
Gracias por la ayuda que puedan prestarme