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

Utilizar objetos dentro de una clase.

Estas en el tema de Utilizar objetos dentro de una clase. en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, expongo mi problema, tengo una clase llamada MySQL() que se encarga de almacenar los datos de la conexión con MySQL y de realizar consultas. ...
  #1 (permalink)  
Antiguo 21/10/2006, 06:25
 
Fecha de Ingreso: junio-2005
Mensajes: 343
Antigüedad: 18 años, 10 meses
Puntos: 10
Utilizar objetos dentro de una clase.

Hola, expongo mi problema, tengo una clase llamada MySQL() que se encarga de almacenar los datos de la conexión con MySQL y de realizar consultas.

Entonces, una vez configurado el objeto, quiero hacerme clases para insertar, eliminar y actualizar registros de una tabla, con lo que tengo la siguiente clase:

Código PHP:
class TabTgu {
    var 
$tgu_id;
    var 
$tgu_nombre;
    var 
$tgu_estado;

    function 
TabTgu(){}
    function 
setTguId($var){$this->tgu_id=$var;}
    function 
setTguNombre($var){$this->tgu_nombre=$var;}
    function 
setTguEstado($var){$this->tgu_estado=$var;}
    function 
getTguEstado(){return $this->tgu_estado;}
    function 
getTguNombre(){return $this->tgu_nombre;}
    function 
getTguId(){return $this->tgu_id;}
    function 
insert($MySQL){        $sql "INSERT INTO tab_tgu VALUES (null,'".$this->tgu_nombre."','".$this->tgu_estado."');";        $res $MySQL->query($sql);    }
    function 
delete($MySQL){        $sql "DELETE FROM tab_tgu WHERE tgu_id = '".$this->tgu_id."'";        $res $MySQL->query($sql);    }
    function 
update($MySQL){        $sql "UPDATE FROM tab_tgu SET tgu_nombre = '".$this->tgu_nombre."' tgu_estado = '".$this->tgu_estado."' WHERE tgu_id = '".$this->tgu_id."';";    }

Esta clase me funciona bien, lo que pasa que he creado otra clase para que me busque dentro de la base de datos en dicha tabla en base a los métodos que yo quiera, es la siguiente:

Código PHP:
class TabTguUtil {
    function 
getTabTguByNombre($MySQL,$var){
        
$sql "SELECT * FROM tab_tgu WHERE tgu_nombre = '".$var."'";
        
$res $MySQL->query($sql);
        
$row mysql_fetch_assoc($res);
        return 
$row;
    }

Mi problema esta en que al usar esta segunda clase me dice lo siguiente:

Fatal error: Call to a member function on a non-object in d:\servidor\www\proyecto\web\inc\TabTgu.php on line 21 que corresponde con la linia:

Código PHP:
$res $MySQL->query($sql); 
Entonces no entiendo xq da error, si en la otra clase le paso el objeto para hacer el insert (comprobado), delete (por comprobar), update(por comprobar) y funciona mientras que en esta otra no me funciona.

Alguién podría decirme que me falta o que estoy haciendo mal ??
  #2 (permalink)  
Antiguo 21/10/2006, 07:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Deberias de exponer todo el codigo (sobre todo donde implementas la funcion getTabTguByNombre) porque al parecer no estas inicializando correctamente el objeto MySQL
  #3 (permalink)  
Antiguo 21/10/2006, 08:23
 
Fecha de Ingreso: junio-2005
Mensajes: 343
Antigüedad: 18 años, 10 meses
Puntos: 10
Ya solucione este problema, pero mira lo que me pasa ahora:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in d:\servidor\www\proyecto\web\inc\TabTgu.php on line 20

No se xo no me caigo en donde esta el error.

Código PHP:
class TabTgu {
    var 
$tgu_id;
    var 
$tgu_nombre;
    var 
$tgu_estado;

    function 
TabTgu(){}
    function 
setTguId($var){$this->tgu_id=$var;}
    function 
setTguNombre($var){$this->tgu_nombre=$var;}
    function 
setTguEstado($var){$this->tgu_estado=$var;}
    function 
getTguEstado(){return $this->tgu_estado;}
    function 
getTguNombre(){return $this->tgu_nombre;}
    function 
getTguId(){return $this->tgu_id;}
    function 
insert($MySQL){        $sql "INSERT INTO tab_tgu VALUES (null,'".$this->tgu_nombre."','".$this->tgu_estado."');";        $res $MySQL->query($sql);    }
    function 
delete($MySQL){        $sql "DELETE FROM tab_tgu WHERE tgu_id = '".$this->tgu_id."'";        $res $MySQL->query($sql);    }
    function 
update($MySQL){        $sql "UPDATE FROM tab_tgu SET tgu_nombre = '".$this->tgu_nombre."' tgu_estado = '".$this->tgu_estado."' WHERE tgu_id = '".$this->tgu_id."';";    }
}
class 
TabTguUtil {
    function 
cargaTgu($res){
        
$row mysql_fetch_assoc($res); //LINEA 20 !!!!
        
$res = new TabTgu();
        
$res->setTguId($row['tgu_id']);
        
$res->setTguNombre($row['tgu_nombre']);
        
$res->setTguEstado($row['tgu_estado']);
        return 
$res;
    }
    function 
cargaTgus($res){
        
$reg = array();
        
$registros mysql_num_rows($res);
        for (
$i=0;$i<=$registros-1;$i++){
            
$reg[$i]=$this->cargaTgu($res);
        }
        return 
$reg;
    }
    function 
getTabTguByNombre($MySQL,$var){
        
$sql "SELECT * FROM tab_tgu WHERE tgu_nombre = '".$var."'";
        
$res $MySQL->query($sql);
        return 
$this->cargaTgu($res);
    }
    function 
getTabTguByEstado($MySQL,$var){
        
$sql "SELECT * FROM tab_tgu WHERE tgu_estado = '".$var."'";
        
$res $MySQL->query($sql);
        return 
$this->cargaTgus($res);
    }

Y aquí donde lo uso:

Código PHP:
include('inc/MySQL.php');
include(
'inc/TabTgu.php');

$conn = new MySQL("localhost","root","","test");
$tabGen = new TabTgu();
$tabGenUtil = new TabTguUtil();

$tabGen->setTguNombre("prueba");
$tabGen->setTguEstado("1");
$tabGen->insert($conn);

$res $tabGenUtil->getTabTguByNombre($conn,"prueba");
echo 
$res->getTguNombre(); 
Estoy a la espera, gracias.
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 13:52.