Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

error de metodo indefinido en poo

Estas en el tema de error de metodo indefinido en poo en el foro de Frameworks y PHP orientado a objetos en Foros del Web. hola tengo otro problema con php orientado a objetos. tengo varias clases. database.php user.php session.php y estas 3 clases las estoy usando en un arhivo ...
  #1 (permalink)  
Antiguo 29/01/2011, 04:15
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
error de metodo indefinido en poo

hola tengo otro problema con php orientado a objetos. tengo varias clases.

database.php
user.php
session.php

y estas 3 clases las estoy usando en un arhivo login.php para crear un logueo para la aplicacion que estoy haciendo. y ya me empiezan los problemas.

este es el error que me da en database.php (clase mysqlbd).

Call to undefined method MySQLBD::ultima_consulta() in G:\wamp\www\moviecontrol\includes\database.php on line 42

Aqui os dejo el codigo de la database.php por donde falla:

database.php:

Código PHP:
    public function enviar_consulta($sql)
    {
        
//esta es la linea ke da error $this->ultima_consulta($sql);
        
$resultado mysql_query($sql,$this->conexion);
        
$this->verificar_consulta($consulta);
        return 
$resultado;
    } 
si necesitais mas codigo decidmelo y pongo mas. enga gracias
  #2 (permalink)  
Antiguo 29/01/2011, 05:41
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: error de metodo indefinido en poo

os dejo mas codigo para ver si veis el error.
el codigo que os pongo es de la clase MysQLBD (database.php)

Código PHP:
<?php
require_once("database.php");

class 
usuario
{
    
    public 
$id;
    public 
$usuario;
    public 
$clave;
    public 
$nombre;
    public 
$apellido;
    
    
    public static function 
buscar_por_id($id)
    {
        global 
$bd;
        
$sql "SELECT * FROM usuarios     WHERE id={$id}";
        
$matriz_usuarios self::buscar_por_sql("SELECT * FROM usuarios     WHERE id={$id}");
        
        return (!empty(
$matriz_usuarios)) ? array_shift($matriz_usuarios) : false;
            
    }
    
    public static function 
buscar_todos()
    {
        
        return 
self::buscar_por_sql("SELECT * FROM usuarios");
    }
    
    public static function 
buscar_por_sql($sql)
    {
        global 
$bd;
        
$resultado $bd->enviar_consulta($sql);
        
$matriz_usuarios = array();
        while(
$registro $bd->fetch_array($resultado))
        {
            
array_push($matriz_usuariosself::instanciar($registro));
        }
        return 
$matriz_usuarios;
            
    }
    
    public static function 
instanciar($registro)
    {
        
$usuario = new usuario();
    

        foreach(
$registro as $propiedad => $valor)
        {
            if(
$usuario->propiedad_existe($propiedad))
            {
                
$usuario->propiedad $valor;
            }
        }
        return 
$usuario;
    }
    
    public function 
propiedad_existe($propiedad)
    {
        
$propiedades get_object_vars($this);
        return 
array_key_exists($propiedad,$propiedades);
    }
    
    public function 
nombre_completo()
    {
        if(isset(
$this->nombre) && isset($this->apellido))
        {
            return 
$hits->nombre " " $this->apellido;
            
        }
        else
        {
            return 
"" ;
        }
    }
}

?>
  #3 (permalink)  
Antiguo 29/01/2011, 05:56
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: error de metodo indefinido en poo

me e equivocado y he subido la clase usuario aqui esta la clase mysqlbd

Código PHP:
<?php
require_once("config.php");




class 
MySQLBD
{
    private 
$conexion;
    private 
$ultima_consulta;
    private 
$mq_activado ;
    private 
$real_scape_string;
    
    
    
    function 
__construct()
    {
        
        
$this->abrir_conexion();    
        
$this->mq_activado get_magic_quotes_gpc();
        
$this->real_space_string function_exists("mysql_real_escape_string");
    }
    
    public function 
abrir_conexion()
    {
        
$this->conexion mysql_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD);
        if(!
$this->conexion)
        {
            die(
"No hemos podido conectarnos a la base de datos: " mysql_error());
        }
        else
        {
            
$bd_seleccionada mysql_select_db(DB_NAME,$this->conexion);
            if(!
$bd_seleccionada)
            {
                die(
"No hemos podido seleccionar la base de datos: " mysql_error());
            }    
        }
    }
    
    public function 
enviar_consulta($sql)
    {
        
$this->ultima_consulta($sql);
        
$resultado mysql_query($sql,$this->conexion);
        
$this->verificar_consulta($consulta);
        return 
$resultado;
    }
    
    private    function 
verificar_consulta($consulta)
    {
        if(!
$consulta)
        {
            
            
$salida "No se ha podido realiar la consulta" .mysql_error(). "<br/>";
            
$salida .= "Ultima consulta sql:" $this->ultima_consulta;
            die(
$salida);
        }
    }
    
    
    public function 
preparar_consulta($consulta)
    {
    
        if(
$this->real_escape_string)
        {
            if(
$this->mq_activado)
            {
                
$consulta stripslashes($consulta);
            }
            
$consulta mysql_real_escape_string($consulta);
        }
        else
        {
            if(!
$mq_activado)
            {
                
$consulta addslashes($consulta);
            }
        }
        return 
$consulta;
    }
    
    public function 
fetch_array($resultado)
    {
        return 
mysql_fetch_array($resultado);
    }

    public function 
affected_rows()
    {
        return 
mysql_affected_rows($this->conexion);    
    }
    
    public function 
insert_id()
    {
        return 
mysql_insert_id($this->conexion);
    }
    
    
    public function 
num_rows($resultado)
    {
        return 
mysql_num_rows($resultado);
    }
    
    public function 
cerrar_conexion()
    {
        if(isset(
$this->conexion))
        {
            
mysql_close($this->conexion);
            unset(
$this->conexion);
        }
    }
}
    
$bd = new MySQLBD();
?>
  #4 (permalink)  
Antiguo 29/01/2011, 10:41
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: error de metodo indefinido en poo

no tienes ningun metodo que se llame asi, lo que se llama asi es un atributo, este es una propiedad no una accion
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 29/01/2011, 13:15
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: error de metodo indefinido en poo

ey gracias no me habia dado cuenta es lo que tu dices ya lo e solucionado gracias
  #6 (permalink)  
Antiguo 29/01/2011, 13:33
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
variable $consulta indefinida :(

que tengo una variable que me hace falta para que me funcione el leer registros de la base de datos pero no me funciona y no se por que. os dejo el codigo de la clase donde la utilizo.


Notice: Undefined variable: consulta in G:\wamp\www\moviecontrol\includes\database.php on line 46

Código PHP:
<?php
require_once("config.php");




class 
MySQLBD
{
    private 
$conexion;
    private 
$ultima_consulta;
    private 
$mq_activado ;
    private 
$real_escape_string;
    
    
    
    function 
__construct()
    {
        
        
$this->abrir_conexion();    
        
$this->mq_activado get_magic_quotes_gpc();
        
$this->real_space_string function_exists("mysql_real_escape_string");
    }
    
    
    public function 
abrir_conexion()
    {
        
$this->conexion mysql_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD);
        if(!
$this->conexion)
        {
            die(
"No hemos podido conectarnos a la base de datos: " mysql_error());
        }
        else
        {
            
$bd_seleccionada mysql_select_db(DB_NAME,$this->conexion);
            if(!
$bd_seleccionada)
            {
                die(
"No hemos podido seleccionar la base de datos: " mysql_error());
            }    
        }
    }
    
    public function 
enviar_consulta($sql)
    {
        
$this->ultima_consulta $sql;
        
$resultado mysql_query($sql,$this->conexion);
                
//la linea de abajo verificar_consulta($consulta); es la ke me da error
                 
$this->verificar_consulta($consulta);
        return 
$resultado;
    }
    
    private    function 
verificar_consulta($consulta)
    {
        if(!
$consulta)
        {
            
            
$salida "No se ha podido realizar la consulta" .mysql_error(). "<br/>";
            
$salida .= "Ultima consulta sql:" $this->ultima_consulta;
            die(
$salida);
        }
    }
    
    
    public function 
preparar_consulta($consulta)
    {
    
        if(
$this->real_escape_string)
        {
            if(
$this->mq_activado)
            {
                
$consulta stripslashes($consulta);
            }
            
$consulta mysql_real_escape_string($consulta);
        }
        else
        {
            if(!
$mq_activado)
            {
                
$consulta addslashes($consulta);
            }
        }
        return 
$consulta;
    }
    
    public function 
fetch_array($resultado)
    {
        return 
mysql_fetch_array($resultado);
    }

    public function 
affected_rows()
    {
        return 
mysql_affected_rows($this->conexion);    
    }
    
    public function 
insert_id()
    {
        return 
mysql_insert_id($this->conexion);
    }
    
    
    public function 
num_rows($resultado)
    {
        return 
mysql_num_rows($resultado);
    }
    
    public function 
cerrar_conexion()
    {
        if(isset(
$this->conexion))
        {
            
mysql_close($this->conexion);
            unset(
$this->conexion);
        }
    }
}
    
$bd = new MySQLBD();
?>
  #7 (permalink)  
Antiguo 29/01/2011, 20:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: variable $consulta indefinida :(

sucede que dentro de dicho método no existe ninguna variable llamada $consulta, quizá te refieres a $sql ¿será?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: metodo, poo
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 19:23.