Foros del Web » Programando para Internet » PHP »

class.paginado funciona pero me salen 2 errores

Estas en el tema de class.paginado funciona pero me salen 2 errores en el foro de PHP en Foros del Web. Un saludo a todos los del foro, he encontrado una clase para paginar resultados en php,pero me da unos errores al final de la clase ...
  #1 (permalink)  
Antiguo 28/06/2003, 07:09
 
Fecha de Ingreso: junio-2003
Mensajes: 102
Antigüedad: 14 años, 6 meses
Puntos: 0
class.paginado funciona pero me salen 2 errores

Un saludo a todos los del foro, he encontrado una clase para paginar resultados en php,pero me da unos errores al final de la clase y no se como solucionarlos,si alguien me puede dar alguna pista.
-paginarempleados.php:
Código PHP:
<?// Conectamos a la Base de Datos
$usuario="Pepe";
$password="Hola";
$base_de_datos="mydb";
$Conn mysql_connect("localhost"$usuario$password);
mysql_select_db("$base_de_datos");
// Obtenemos la página actual, por el método que más nos guste
// Por defecto, la página se propaga por la variable $pagina
$pagina $HTTP_GET_VARS["pagina"];
// Incluimos la Clase Paginado
include("C:/asp/php/class.paginado.php");
$rs = new paginado($Conn); // instanciamos un objeto
$rs->pagina($pagina); // Le indicamos en que página estamos - 1 por defecto
$rs->porPagina(10); // Le decimos cuantos registros por página queremos - 20 por defecto
//$rs->propagar("forum"); // Le decimos las variables que queremos propagar en los links 
if(!$rs->query("SELECT * FROM empleados")) // Y ejecutamos nuestra consulta.
{    
    die( 
$rs->error() ); // Si Query devolvió falso, hubo un error y lo mostramos.
}
echo 
"Mostrando ".$rs->desde()." - ".$rs->hasta()." de un total de ".$rs->total()."<br>";
// Recorremos todos los resultados y los mostramos.
while($row $rs->obtenerArray())
{    
    echo 
$row["codigo"].", ".$row["nombre"]."<br>";
    echo 
"<hr>";
// while
// Finalmente mostramos los medios para la navegación entre los resultados.
echo $rs->anterior()." - ".$rs->nroPaginas()." - ".$rs->siguiente();?>

Al ejecutar me da el siguiente error:

Warning: Invalid argument supplied for foreach() in C:\asp\php\class.paginado.php on line 462

Notice: Undefined variable: ret in C:\asp\php\class.paginado.php on line 464

-class.paginado.php:
<?php 
class paginado 

    var 
$_conn
    var 
$_error
    var 
$_pagina
    var 
$_porPagina 20
    var 
$_query
    var 
$_rs
    var 
$_total
    var 
$_totalPaginas
    var 
$_registros
    var 
$_siguiente "Siguiente >"
    var 
$_anterior "< Anterior"
         
  function 
paginado($Conn
    { 
        
$this->conn($Conn); 
    } 
     
  function 
conn() 
    { 
        switch (
func_num_args()) 
        { 
            case 
1
                
$this->_conn func_get_arg(0); 
            break; 
            default: 
                return 
$this->_conn
            break; 
        } 
    } 
// function 
     
    /** 
     * Método para acceder a $_error 
     * 
     * @access public 
     * @since 25/02/2002 05:30:39 p.m. 
     **/ 
    
function error() 
    { 
        switch (
func_num_args()) 
        { 
            case 
1
                
$this->_error func_get_arg(0); 
            break; 
            default: 
                return 
$this->_error
            break; 
        } 
    } 
// function 
     
    /** 
     * Método para acceder a $_pagina 
     * 
     * @access public 
     * @since 25/02/2002 05:57:18 p.m. 
     **/ 
    
function pagina() 
    { 
        switch (
func_num_args()) 
        { 
            case 
1
                
$this->_pagina func_get_arg(0); 
                
$this->_pagina = empty($this->_pagina)?1:$this->_pagina
            break; 
            default: 
                return 
$this->_pagina
            break; 
        } 
    } 
// function 

    /** 
     * Método para acceder a $_porPagina 
     * 
     * @access public 
     * @since 25/02/2002 05:31:31 p.m. 
     **/ 
    
function porPagina() 
    { 
        switch (
func_num_args()) 
        { 
            case 
1
                
$this->_porPagina func_get_arg(0); 
            break; 
            default: 
                return 
$this->_porPagina
            break; 
        } 
    } 
// function 
     
    /** 
     * Método para acceder a $_total 
     * 
     * @access public 
     * @since 26/02/2002 11:13:19 a.m. 
     **/ 
    
function total() 
    { 
        switch (
func_num_args()) 
        { 
            case 
1
                
$this->_total func_get_arg(0); 
            break; 
            default: 
                return 
$this->_total
            break; 
        } 
    } 
// function 
     
    /** 
     * Método para acceder a $_totalPaginas 
     * 
     * @access public 
     * @since 26/02/2002 12:22:59 p.m. 
     **/ 
    
function totalPaginas() 
    { 
        switch (
func_num_args()) 
        { 
            case 
1
                
$this->_totalPaginas func_get_arg(0); 
            break; 
            default: 
                return 
$this->_totalPaginas
            break; 
        } 
    } 
// function 
     
    /** 
     * Método para acceder a $_rs 
     * 
     * En caso de ser un link inválido, el método retorna FALSE. 
     * @access public 
     * @since 25/02/2002 05:55:15 p.m. 
     **/ 
    
function rs() 
    { 
        switch (
func_num_args()) 
        { 
            case 
1
                
$this->_rs func_get_arg(0); 
                if(!
$this->_rs
                { 
                    return 
false
                }
// Fin If 
                
return true
            break; 
            default: 
                return 
$this->_rs
            break; 
        } 
    }  
     
    
//Método para acceder a $_registros 
    
function registros() 
    { 
        switch (
func_num_args()) 
        { 
            case 
1
                
$this->_registros func_get_arg(0); 
            break; 
            default: 
                return 
$this->_registros
            break; 
        } 
    } 

  function 
desde() 
    { 
        return ((
$this->pagina()-1)*$this->porPagina())+1
    } 
   function 
hasta() 
    { 
        return (
$this->desde()-1)+$this->registros(); 
    }
     
   function 
query($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->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
        } 
        
$this->registrosmysql_num_rows$this->rs() )); 
        return 
true
    }  
   function 
obtenerArray() 
    { 
        return 
mysql_fetch_array$this->rs() ); 
    }  

        
    function 
siguiente() 
    { 
        switch (
func_num_args()) 
        { 
            case 
1
                
$this->_siguiente func_get_arg(0); 
            default: 
                if(
$this->hasta() < $this->total()) 
                { 
                    return 
"<a href=\"?pagina=".($this->pagina()+1).$this->propagar()."\">".$this->_siguiente."</a>"
                } 
            break; 
        } 
    }      
     
     
   function 
anterior() 
    { 
        switch (
func_num_args()) 
        { 
            case 
1
                
$this->_anterior func_get_arg(0); 
            default: 
                if(
$this->pagina() != 1
                { 
                    return 
"<a href=\"?pagina=".($this->pagina()-1).$this->propagar()."\">".$this->_anterior."</a>"
                } 
            break; 
        } 
    }  
       
    function 
nroPaginas() 
    { 
        for(
$i 1$i <= $this->totalPaginas() ; $i++) 
        { 
            
$temp[$i] = "<a href=\"?pagina=$i".$this->propagar()."\">$i</a>"
        } 
        
$temp[$this->pagina()] = "<b>".$this->pagina()."</b>"
        return 
implode(" | "$temp); 
    }  
     
   function 
propagar() 
    { 
        switch(
func_num_args()){ 
            case 
0:  
                [
COLOR=red]foreach($this->_variables as $var)[/COLOR]    [COLOR=red]-->462[/COLOR
                    
$ret.= "&$var=".$GLOBALS[$var]; 
                [
COLOR=red]return $ret;[/COLOR]    [COLOR=red]-->464[/COLOR
                break; 
            default: 
                for(
$i 0$i func_num_args(); $i++) 
                { 
                    
$this->_variables[] = func_get_arg($i); 
                }  
                break; 
        }     } 



?>
  #2 (permalink)  
Antiguo 28/06/2003, 12:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno, usuarios de esa classe serguro que aquí en ese foro encuentras .. Pero sería bueno que te contactaras con el autor para explicarle tu problema, en este caso con Websudio (administrador de estos forosdelweb.com)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 28/06/2003, 14:18
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Si, contacta con Webstudio porque esto es un BUG. Parece que se le olvido declarar la propiedad _variables e inicializarla, y luego tambien le fallo no dar un valor por defecto a ret en la funcion propagar(). Una posible solucion seria añadir $_variables al comienzo de la clase:
Código PHP:
class paginado 



    var 
$_conn

    var 
$_error

    var 
$_pagina

    var 
$_porPagina 20

    var 
$_query

    var 
$_rs

    var 
$_total

    var 
$_totalPaginas

    var 
$_registros

    var 
$_siguiente "Siguiente >"

    var 
$_anterior "< Anterior"

    var 
$_variables;  // añadimos la propiedad 
Despues la inicializamos en el constructor como un array vacio:
Código PHP:

  
function paginado($Conn

    { 

        
$this->conn($Conn); 
        
        
$this->_variables=array();  // inicializamos

    

Y solo queda dar un valor por defecto a $ret en propagar:
Código PHP:

   
function propagar() 

    { 

        switch(
func_num_args()){ 

            case 
0:  

                
$ret='';  // valor que devolvemos por defecto

                
foreach($this->_variables as $var)

                    
$ret.= "&$var=".$GLOBALS[$var]; 

                return 
$ret

                break; 

            default: 
Ya sabes, le avisas a Webstudio acerca de su BUG (parece que es cuando no propagas ninguna variable), pruebas mi solucion y se la recomiendas

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 30/06/2003, 07:25
 
Fecha de Ingreso: junio-2003
Mensajes: 102
Antigüedad: 14 años, 6 meses
Puntos: 0
Gracias Josemi,no se que haria sin vosotros se lo recomendare a webestudio.
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 12:31.