Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/05/2011, 13:48
zodgyy
 
Fecha de Ingreso: febrero-2008
Ubicación: Mexico, D.F.
Mensajes: 23
Antigüedad: 16 años, 2 meses
Puntos: 0
Herencia en php

Saludos

Tengo un problema con la herencia de clases, haber si me logro explicar:

Tengo una clase de conexion a la base de datos junto con algunos metodos para ejecucion de jquerys y otros mas, tambien tengo una clase llamada proyecto que se hereda de la clase de la base de datos y otra clase llamada informe tecnico que hereda de la clase proyecto.

Ahora el problema es que no me ejecuta los metodos de la clase de la base de datos (no ejecuta la consulta)

pongo el codigo para mejor entendimiento

Clase de Base de Datos
Código PHP:
class BD {
    
    
//Datos de la cadena de conexion
    
private $cnx "host=localhost dbname=prueba user=user password=pwd";
    private 
$conn;
    
    const 
ABIERTA 1;
    const 
CERRADA 0;
    
    private 
$status CERRADA;
    
    
/**
    * Constructor
    */    
    
public function __construct(){
        
//Cerramos la conexion que este activa
        
$this->close();
    }
    
    
/**
    * Abre conexion a la base de datos
    */    
    
private function open(){
        
$this->status ABIERTA;
        
$this->conn pg_connect($this->cnx) or die('<b>Error de conexion</b>');
    }
    
    
/**
    * Cierra conexion a la base de datos
    */    
    
private function close(){
        
$this->status CERRADA;
        
pg_close($this->conn);
    }
    
    
/**
    * Trae el ultimo ID insertado
    * @param string $table --> Nombre de la tabla
    * @param string $campo --> Nombre del serial
    */    
    
public function DB_Last_Insert_ID($table$campo) {
        
$TempRs $this->ComandoSQL("SELECT currval('".$table."_".$campo."_seq') FROM ".$table);
        
$Res pg_fetch_result($TempRs,0,0);
        
pg_free_result($TempRs);
        return 
$Res;
        
$this->close();
    }
    
    
/**
    * Ejecuta una consulta que no regresa datos (UPDATE,INSERT,DELETE)
    * @param string $sql --> Consulta SQL
    */    
    
public function ComandoSQL($sql,$ver 0){
        try{
            
//imprimo consulta
            
if ($ver==1){ echo "<b><i>".$sql."</i></b><br />"; exit();}
            
            if(
$this->status==BD::CERRADA$this->open();

            
$rs pg_query($this->conn$sql) or die (pg_last_error().'<br />Consulta:<b>'.$sql.'</b>');
            return 
$rs;    
            
settype($rs"null");
            
$this->close();
            
        }catch ( 
Exception $e ){
            echo 
$e->getMessage();
            return 
FALSE;
        }
    }
    
    
/**
    * Ejecuta una consulta (SELECT)
    * @param string $sql --> Consulta SQL
    * @return un  array de registros, cada uno siendo un array asociativo de campos
    */    
    
public function QuerySQL($sql,$ver 0){
        try{
            
//imprimo consulta
            
if ($ver==1){ echo "<b><i>".$sql."</i></b><br />";}

            if(
$this->status==BD::CERRADA$this->open();
            
            
$rs=pg_query($this->conn$sql) or die (pg_last_error().'<br/>Consulta:<b>'.$sql.'</b>');
            
            
$registros = array();
            while(
$reg pg_fetch_array($rs)){
                
$registros[] = $reg;
            }
            return 
$registros;
            
settype($rs"null");
            
$this->close();
        }catch ( 
Exception $e ){
            echo 
$e->getMessage();
            return 
FALSE;
        }
    }
            
}
//fin class 
Clase Proyecto
Código PHP:
<?php   require_once 'cnxDB.php';

class 
Proyecto extends BD{

    private 
$nId_Proyecto;
    private 
$nId_Convocatoria;  
    
    public function 
__construct() {
        
parent::__construct();
    }

    public function 
getId_Proyecto(){
        return 
$this->nId_Proyecto;
    }

    public function 
setId_Proyecto($ID_P){
        
$this->nId_Proyecto $ID_P;
    }

    public function 
getId_Convocatoria(){
        return 
$this->nId_Convocatoria;
    }

    public function 
ObtengoProyecto($id ''$Nom ''){

        
$filtro " 1 = 1 ";

        if(!empty(
$id)){
            
$filtro .= " AND nid_proyecto = ".$id;
        }

        if(!empty(
$Nom)){
            
$filtro .= " AND cnombreproyecto = '".$Nom."' ";
        }
        
        
//Obtenemos todos los datos del id
        
$rs $this->QuerySQL("SELECT * FROM tblproyecto WHERE cestatus IS NULL AND $filtro;",0);

        if(
count($rs) > 0){
            
$this->setId_Proyecto($rs[0]['nid_proyecto']);
            
$this->setId_Convocatoria($rs[0]['nid_convocatoria']);
            return 
$rs;
        }
    }
//end ObtengoProyecto()

    
public function InsertarProyecto(){
            .............        
    }
//End InsertarProyecto()
    
}// End class
?>
Clase InformeTecnico
Código PHP:
<?php    require_once 'class.Proyecto.php';

class 
InformeTecnico extends Proyecto{

    private 
$nId_Informe;
    private 
$nId_Proyecto2;

    public function 
__construct() {
        
parent::__construct();
    }
    
    public function 
getId_Informe(){
        return 
$this->nId_Informe;
    }

    public function 
setId_Informe($ID_Inf){
        
$this->nId_Informe $ID_Inf;
    }

    public function 
getId_Proyecto2(){
        return 
$this->nId_Proyecto2;
    }

    public function 
setId_Proyecto2($ID_P){
        
$this->nId_Proyecto2 $ID_P;
    }

   public function 
ObtengoInformeTecnico($Id_Inf '',$Id_Proy ''){
    .....
   }

}
//End Class
La pagina que me marca error..
Código PHP:
<?php   require_once 'class.InformeTecnico.php';

$Dat = new InformeTecnico();

$rs$Dat->QuerySQL("SELECT * FROM tabla WHERE cestatus is null;",0);

?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Ejemplo</title>
</head>

<body>
Algo..
</body>
</html>
En esta pagina solo me imprime:

Error de conexion

No se en que este mal espero me puedan ayudar
GRACIAS