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.
 
 
 
 
 
 

235 lines
5.6 KiB

<?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 MysqlClass
{
//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 MysqlClass($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=mysql_connect( $this->servidor , $this->nombreDeUsuario, $this->contrasena);
mysql_select_db($this->nombreBD, $this->enlace);
//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("mysql_query")){
$this->consulta = mysql_db_query($sentenciaSQL, $this->enlace);
}
else{
$this->consulta = mysql_query($sentenciaSQL, $this->enlace);
}
if(!$this->consulta){
$retConsultaExitosa = false;
}
return $retConsultaExitosa;
}
//Devuelve los resultados de una fila dada en forma de arreglo asociativo
function obtenerFilaArray($fila)
{
$this->resultado = mysql_fetch_array($this->consulta, MYSQL_BOTH);
return $this->resultado;
}
//Devuelve todas las filas del resultados en un arreglo asociativo
function obtenerTotalFilasArray()
{
//Antes hacia la atriz de una, ahora hacer la matriz a mano:
$this->my_fetch_all_Aux($this->consulta,"assoc");
return $this->resultado;
}
function my_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 = mysql_fetch_array($res, MYSQL_ASSOC))
{
$array_out[] = $row;
}
}
else
{
while ($row = mysql_fetch_array($res))
{
$array_out[] = $row;
}
}
$this->resultado = $array_out;
return $this->resultado;
}
function obtenerConsulta()
{
return $this->consulta;
}
function insertarRegistro($sentenciaSQL)
{
mysql_query($this->enlace,$sentenciaSQL);
}
function cantidadFilasResultado()
{
return mysql_num_rows($this->consulta);
}
function cantidadCamposResultado()
{
return mysql_num_fields($this->consulta);
}
//libera el contenido del atributo que almacena las consultas
function liberarConsulta()
{
mysql_free_result($this->consulta);
}
function desconectarBD()
{
mysql_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
?>