You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
<?php
/***************************************************************************** .::. PostgreClass .::. @Autor: Aldrin Echeverry Higgins -- @Modificado por: Federico A. Ocampo @Email: aldrin@adanetwork.net -- federico@mcanet.com.ar @Empresa: Ada Network -- MCAnet @Descripcion: Una Clase diseniada con los conceptos de POO en PHP. @Version: 1.1 *****************************************************************************/ class PostgreClass { //Atributos Basicos de la clase
var $servidor; //Nombre de la maquina donde se encuentra la BD generalmente es localhost
var $nombreBD; //Nombre de la Base de Datos
var $nombreDeUsuario; //Nombre del usuario autorizado para entrar a la Base de Datos
var $contrasena; //Contraseña del Usuario
//Atributos Modificados
var $enlace;//Almacena el enlace con la Base de Datos una vez establecido
var $resultado;//Almacena el resultado obtenido por la consulta a la BD
var $consulta;//Almacena la consulta realizada con el metodo consultaBD();
var $procesoCorrecto;
//Constructor de la Clase - Inicializa algunos atributos basicos
function PostgreClass($servidor,$nombreBD,$nombreDeUsuario,$contrasena) { $this->servidor = $servidor; $this->nombreBD = $nombreBD; $this->nombreDeUsuario = $nombreDeUsuario; $this->contrasena = $contrasena; }
//---------------Metodos y Procedimientos----------------
//conectarBD(); Te permite conectar y enlazar la BD, el enlace a
//la BD es almacenado modificando el atributo $enlace
function conectarBD() { $retConexionExitosa = true; $this->enlace=pg_connect(" host = ". $this->servidor . " user = ". $this->nombreDeUsuario . " password = ". $this->contrasena . " dbname = ". $this->nombreBD . " port = 5432");
//Si la conexion fue exitosa
if(!$this->enlace) { $retConexionExitosa = false; } return $retConexionExitosa; }
//consultarBD() permite realizar consultas en la BD enlazada
function consultarBD($sentenciaSQL) { $retConsultaExitosa = true;
if(!function_exists("pg_query")){ $this->consulta = pg_exec($this->enlace,$sentenciaSQL); } else{ $this->consulta = pg_query($this->enlace,$sentenciaSQL); } if(!$this->consulta){ $retConsultaExitosa = false; }
return $retConsultaExitosa; }
//Devuelve los resultados de una fila dada en forma de arreglo asociativo
function obtenerFilaArray($fila) { $this->resultado = pg_fetch_array($this->consulta, $fila); return $this->resultado; }
//Devuelve todas las filas del resultados en un arreglo asociativo
function obtenerTotalFilasArray() { //Comprueba si en la version de PHP actual existe la funcion pg_fetch_all. Si no usa una implem. propia
if (!function_exists("pg_fetch_all")){ $this->pg_fetch_all_Aux($this->consulta,"assoc"); } else{ $this->resultado = pg_fetch_all($this->consulta); } return $this->resultado; }
function pg_fetch_all_Aux($res, $kind="assoc") { $i = 0; // this is needed for the row integer in the looped pg_fetch_array
$array_out = NULL; if ($kind == "assoc") { while ($row = pg_fetch_array($res, $i, PGSQL_ASSOC)) { $array_out[] = $row; $i++; } } else { while ($row = pg_fetch_array($res)) { $array_out[] = $row; } }
$this->resultado = $array_out; return $this->resultado; }
function obtenerConsulta() { return $this->consulta; }
function insertarRegistro($sentenciaSQL) { pg_query($this->enlace,$sentenciaSQL); }
function cantidadFilasResultado() { return pg_numrows($this->consulta); }
function cantidadCamposResultado() { return pg_numfields($this->consulta); }
//libera el contenido del atributo que almacena las consultas
function liberarConsulta() { pg_freeresult($this->consulta); }
function desconectarBD() { pg_close($this->enlace); }
function Begin_Transaction() { $SQL_BEGIN = 'BEGIN;'; $this->procesoCorrecto = true; $procesoCorrect=$this->conectarBD(); if($procesoCorrect) { $procesoCorrect = $this->consultarBD($SQL_BEGIN); if($procesoCorrect) { $ret_datos = $this->obtenerTotalFilasArray(); $this->procesoCorrecto = true; } else $this->procesoCorrecto = false; $this->liberarConsulta(); $this->desconectarBD(); } else $this->procesoCorrecto = false; return $ret_datos; }
/** * Termina un bloque de transaccion * @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip] */ function End_Transaction() { $SQL_END = 'COMMIT;'; $this->procesoCorrecto = true; $procesoCorrect=$this->conectarBD(); if($procesoCorrect) { $procesoCorrect = $this->consultarBD($SQL_BEGIN); if($procesoCorrect) { $ret_datos = $this->obtenerTotalFilasArray(); $this->procesoCorrecto = true; } else $this->procesoCorrecto = false; $this->liberarConsulta(); $this->desconectarBD(); } else $this->procesoCorrecto = false; return $ret_datos; }
/** * Vuelve atras las operaciones de un bloque de transaccion * @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip] */ function Rollback_Transaction() { $SQL_END = 'ROLLBACK;'; $this->procesoCorrecto = true; $procesoCorrect=$this->conectarBD(); if($procesoCorrect) { $procesoCorrect = $this->consultarBD($SQL_BEGIN); if($procesoCorrect) { $ret_datos = $this->obtenerTotalFilasArray(); $this->procesoCorrecto = true; } else $this->procesoCorrecto = false; $this->liberarConsulta(); $this->desconectarBD(); } else $this->procesoCorrecto = false; return $ret_datos; } }//Fin de la Clase PostgreClass
?>
|