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
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
?>
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
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>
Error de conexion
No se en que este mal espero me puedan ayudar
GRACIAS