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

4 years ago
  1. <?php
  2. /*****************************************************************************
  3. .::. PostgreClass .::.
  4. @Autor: Aldrin Echeverry Higgins -- @Modificado por: Federico A. Ocampo
  5. @Email: aldrin@adanetwork.net -- federico@mcanet.com.ar
  6. @Empresa: Ada Network -- MCAnet
  7. @Descripcion: Una Clase diseniada con los conceptos de POO en PHP.
  8. @Version: 1.1
  9. *****************************************************************************/
  10. class MysqlClass
  11. {
  12. //Atributos Basicos de la clase
  13. var $servidor; //Nombre de la maquina donde se encuentra la BD generalmente es localhost
  14. var $nombreBD; //Nombre de la Base de Datos
  15. var $nombreDeUsuario; //Nombre del usuario autorizado para entrar a la Base de Datos
  16. var $contrasena; //Contraseña del Usuario
  17. //Atributos Modificados
  18. var $enlace;//Almacena el enlace con la Base de Datos una vez establecido
  19. var $resultado;//Almacena el resultado obtenido por la consulta a la BD
  20. var $consulta;//Almacena la consulta realizada con el metodo consultaBD();
  21. var $procesoCorrecto;
  22. //Constructor de la Clase - Inicializa algunos atributos basicos
  23. function MysqlClass($servidor,$nombreBD,$nombreDeUsuario,$contrasena)
  24. {
  25. $this->servidor = $servidor;
  26. $this->nombreBD = $nombreBD;
  27. $this->nombreDeUsuario = $nombreDeUsuario;
  28. $this->contrasena = $contrasena;
  29. }
  30. //---------------Metodos y Procedimientos----------------
  31. //conectarBD(); Te permite conectar y enlazar la BD, el enlace a
  32. //la BD es almacenado modificando el atributo $enlace
  33. function conectarBD()
  34. {
  35. $retConexionExitosa = true;
  36. $this->enlace=mysql_connect( $this->servidor , $this->nombreDeUsuario, $this->contrasena);
  37. mysql_select_db($this->nombreBD, $this->enlace);
  38. //Si la conexion fue exitosa
  39. if(!$this->enlace)
  40. {
  41. $retConexionExitosa = false;
  42. }
  43. return $retConexionExitosa;
  44. }
  45. //consultarBD() permite realizar consultas en la BD enlazada
  46. function consultarBD($sentenciaSQL)
  47. {
  48. $retConsultaExitosa = true;
  49. if(!function_exists("mysql_query")){
  50. $this->consulta = mysql_db_query($sentenciaSQL, $this->enlace);
  51. }
  52. else{
  53. $this->consulta = mysql_query($sentenciaSQL, $this->enlace);
  54. }
  55. if(!$this->consulta){
  56. $retConsultaExitosa = false;
  57. }
  58. return $retConsultaExitosa;
  59. }
  60. //Devuelve los resultados de una fila dada en forma de arreglo asociativo
  61. function obtenerFilaArray($fila)
  62. {
  63. $this->resultado = mysql_fetch_array($this->consulta, MYSQL_BOTH);
  64. return $this->resultado;
  65. }
  66. //Devuelve todas las filas del resultados en un arreglo asociativo
  67. function obtenerTotalFilasArray()
  68. {
  69. //Antes hacia la atriz de una, ahora hacer la matriz a mano:
  70. $this->my_fetch_all_Aux($this->consulta,"assoc");
  71. return $this->resultado;
  72. }
  73. function my_fetch_all_Aux($res, $kind="assoc")
  74. {
  75. $i = 0; // this is needed for the row integer in the looped pg_fetch_array
  76. $array_out = NULL;
  77. if ($kind == "assoc")
  78. {
  79. while ($row = mysql_fetch_array($res, MYSQL_ASSOC))
  80. {
  81. $array_out[] = $row;
  82. }
  83. }
  84. else
  85. {
  86. while ($row = mysql_fetch_array($res))
  87. {
  88. $array_out[] = $row;
  89. }
  90. }
  91. $this->resultado = $array_out;
  92. return $this->resultado;
  93. }
  94. function obtenerConsulta()
  95. {
  96. return $this->consulta;
  97. }
  98. function insertarRegistro($sentenciaSQL)
  99. {
  100. mysql_query($this->enlace,$sentenciaSQL);
  101. }
  102. function cantidadFilasResultado()
  103. {
  104. return mysql_num_rows($this->consulta);
  105. }
  106. function cantidadCamposResultado()
  107. {
  108. return mysql_num_fields($this->consulta);
  109. }
  110. //libera el contenido del atributo que almacena las consultas
  111. function liberarConsulta()
  112. {
  113. mysql_free_result($this->consulta);
  114. }
  115. function desconectarBD()
  116. {
  117. mysql_close($this->enlace);
  118. }
  119. function Begin_Transaction()
  120. {
  121. $SQL_BEGIN = 'BEGIN;';
  122. $this->procesoCorrecto = true;
  123. $procesoCorrect=$this->conectarBD();
  124. if($procesoCorrect)
  125. {
  126. $procesoCorrect = $this->consultarBD($SQL_BEGIN);
  127. if($procesoCorrect)
  128. {
  129. $ret_datos = $this->obtenerTotalFilasArray();
  130. $this->procesoCorrecto = true;
  131. }
  132. else
  133. $this->procesoCorrecto = false;
  134. $this->liberarConsulta();
  135. $this->desconectarBD();
  136. }
  137. else
  138. $this->procesoCorrecto = false;
  139. return $ret_datos;
  140. }
  141. /**
  142. * Termina un bloque de transaccion
  143. * @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip]
  144. */
  145. function End_Transaction()
  146. {
  147. $SQL_END = 'COMMIT;';
  148. $this->procesoCorrecto = true;
  149. $procesoCorrect=$this->conectarBD();
  150. if($procesoCorrect)
  151. {
  152. $procesoCorrect = $this->consultarBD($SQL_BEGIN);
  153. if($procesoCorrect)
  154. {
  155. $ret_datos = $this->obtenerTotalFilasArray();
  156. $this->procesoCorrecto = true;
  157. }
  158. else
  159. $this->procesoCorrecto = false;
  160. $this->liberarConsulta();
  161. $this->desconectarBD();
  162. }
  163. else
  164. $this->procesoCorrecto = false;
  165. return $ret_datos;
  166. }
  167. /**
  168. * Vuelve atras las operaciones de un bloque de transaccion
  169. * @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip]
  170. */
  171. function Rollback_Transaction()
  172. {
  173. $SQL_END = 'ROLLBACK;';
  174. $this->procesoCorrecto = true;
  175. $procesoCorrect=$this->conectarBD();
  176. if($procesoCorrect)
  177. {
  178. $procesoCorrect = $this->consultarBD($SQL_BEGIN);
  179. if($procesoCorrect)
  180. {
  181. $ret_datos = $this->obtenerTotalFilasArray();
  182. $this->procesoCorrecto = true;
  183. }
  184. else
  185. $this->procesoCorrecto = false;
  186. $this->liberarConsulta();
  187. $this->desconectarBD();
  188. }
  189. else
  190. $this->procesoCorrecto = false;
  191. return $ret_datos;
  192. }
  193. }//Fin de la Clase PostgreClass
  194. ?>