Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/03/2009, 14:37
colocolino73
 
Fecha de Ingreso: marzo-2009
Mensajes: 49
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Problemas con paginacion

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&oacute; un error al ejecutar el query <i><b>\"$query_count\"</b></i>. La base dijo : <b>".mysql_error()."</b>.");
            return 
false;
        }
// Fin If
        
$this->totalmysql_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->registrosmysql_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