miércoles, 22 de julio de 2009

Programacion Orientada a Objetos en PHP Clase BaseDeDatos

Bueno ultimamente estado trabajando en una clases para conexion de Base de Datos Para facilitar el tiempo en realizar consultas y conexiones, estos son los ficheros:

Fichero: config.inc.php


  1. define("HOME",realpath(dirname(__FILE__)));
  2. define("MODELO",HOME."\modelo");
  3. define("VISTA",HOME."\vista");
  4. define("CONTROLADOR",HOME."\controlador");
  5. define("CLASES",HOME."\clases");
  6. ?>


Fichero: BaseDeDatos.class.php
  1. class BaseDeDatos{
  2. /*
  3. * Patch o ruta actual de la aplicacion
  4. */
  5. private $patch;
  6. /*
  7. * Tipo de Conexion mysql, odbc,sql
  8. */
  9. private $tipodeconexion;
  10. /*
  11. * Host de Conexion
  12. */
  13. protected $host;
  14. /*
  15. * Usuario de Conexion
  16. */
  17. protected $user;
  18. /*
  19. * Password de Conexion
  20. */
  21. protected $password;
  22. /*
  23. * Base de Datos de Conexion
  24. */
  25. protected $database;
  26. /*
  27. * Crea una conexion
  28. */
  29. public function __construct($tipodeconexion){
  30. $this->DatosDeConexion();
  31. $this->SeleccionarConexion($tipodeconexion);
  32. }
  33. protected function DatosDeConexion(){
  34. $this->patch = MODELO."\Conexion.tpl";
  35. if(file_exists($this->patch)){
  36. $vconexion = file($this->patch);
  37. $this->host = str_replace("\r\n", "",$vconexion[0]);
  38. $this->user = str_replace("\r\n", "",$vconexion[1]);
  39. $this->password = str_replace("\r\n", "",$vconexion[2]);
  40. $this->database = str_replace("\r\n", "",$vconexion[3]);}
  41. else {echo "No existe fichero de configuracion";}
  42. }
  43. private function SeleccionarConexion($driver){
  44. $driver = "base".$driver;
  45. $this->$driver();
  46. }
  47. protected function Registrar(){
  48. }
  49. protected function Modificar(){
  50. }
  51. protected function Eliminar(){
  52. }
  53. }
  54. ?>

Fichero: ConectarMysql.class.php

  1. class ConectarMysql extends BaseDeDatos {

  2. private $tablas;
  3. private $filas;
  4. private $registros;
  5. private $cadena_registro = "";
  6. private $contador;
  7. private $identificador;


  8. protected function baseMysql(){
  9. //realizamos la conexion con nuestra Base de Datos
  10. //echo $this->host.$this->database;
  11. $this->contador=-1;
  12. if($this->host=="" and $this->user==""and $this->database=="")
  13. echo "Ingrese Valores Validos en DataBase.txt";
  14. else
  15. {
  16. if(!($vierror = mysql_connect($this->host,$this->user,$this->password)))
  17. echo "Error Conectandose a la Base de datos";
  18. if(!(mysql_select_db($this->database,$vierror)))
  19. echo "Error seleccionando la base de datos.";
  20. }
  21. }
  22. /**
  23. *Metodo para registrar una fila
  24. *
  25. * @param String $tabla
  26. * @param String $columnas
  27. * @param String $registros
  28. * @return True,False
  29. */
  30. public function Registrar($tabla,$columnas,$registros){
  31. //Extraemos la cadena de registros
  32. $Array_registros = explode(",",$registros);
  33. $Array_columnas = explode(",",$columnas);
  34. //verificamos que los registros y las columnas son iguales
  35. if(count($Array_registros) == count($Array_columnas)){
  36. //realizamos el registro de datos en mysql
  37. $this->cadena_registro .= "insert into ".$tabla." (".$columnas.") values ( \n";

  38. for ($i=0;$i<count($Array_registros);$i++){
  39. $this->cadena_registro .= "'".$Array_registros[$i]."'";
  40. if($i+1<count($Array_registros)){$this->cadena_registro .= ",";}
  41. }
  42. $this->cadena_registro .= ")";
  43. //verificamos si se hizo el registro correctamente
  44. if(mysql_query($this->cadena_registro))
  45. return "true";
  46. else
  47. return "false";
  48. }else{return "El campo columna no coincide con el campo registro";}
  49. }
  50. /**
  51. * Esta funcion nos permite Actualizar una consulta el formato es :
  52. * Nombre de la tabla
  53. * Nombre de las columnas a modificar separadas por coma
  54. * Nombre de los registros a ingresar separados por coma
  55. * Nombre de la columna que sera la condicion para realizar la actualizacion
  56. * Valor que tendra la columna de condicion
  57. *
  58. * Ejemplo:
  59. * $this->Modificar("mitabla","nombre,apellido,direccion","carlos,cervantes,lurin","id","5");
  60. *
  61. *
  62. * @param String $tabla
  63. * @param String $columnas
  64. * @param String $registros
  65. * @param String $where
  66. * @param String $valor
  67. * @return True,False
  68. */
  69. function Modificar($tabla,$columnas,$registros,$where,$valor){
  70. /*
  71. *Realizamos un array de las variables separados por coma
  72. */
  73. $Array_columnas = explode(",",$columnas);
  74. $Array_registros = explode(",",$registros);
  75. /*
  76. *Verficamos que la cantidad de columnas sea igual a la cantidad de registros en
  77. * registro y en el where
  78. */
  79. if(count($Array_columnas)== count($Array_registros)){
  80. $this->cadena_actualizar .= "UPDATE ".$tabla." SET ";
  81. for($i=0;$i<count($Array_columnas);$i++){
  82. $this->cadena_actualizar .= $Array_columnas[$i]." = '".$Array_registros[$i]."' ";
  83. if($i+1<count($Array_columnas)){$this->cadena_actualizar .= ", ";}
  84. }
  85. $this->cadena_actualizar .= " WHERE ".$where." = '".$valor."'";
  86. if(mysql_query($this->cadena_actualizar)){
  87. return "True"; }
  88. else return "False";
  89. }
  90. else
  91. return "El numero de registros es diferente al numero de columnas";
  92. }
  93. /**
  94. * Metodo para eliminar una consulta
  95. *
  96. * @param String $tabla
  97. * @param String $where
  98. * @param String $valor
  99. * @param Int $limit
  100. */
  101. public function Eliminar($tabla,$where,$valor,$limit){
  102. $this->cadena_eliminar .= "DELETE FROM ".$tabla." WHERE ";
  103. $this->cadena_eliminar .= $where." = '".$valor."' LIMIT ".$limit;
  104. if(mysql_query($this->cadena_eliminar))
  105. return "True";
  106. else
  107. return "False";
  108. }
  109. /**
  110. * Realizar una consulta en una tabla
  111. *
  112. * @param string $tabla
  113. * @param string $filas
  114. * @param string $where
  115. * @param string $valor
  116. */
  117. public function Consultar($tabla,$filas,$where,$valor){
  118. $this->contador++;
  119. if($where==""){
  120. $this->cadena_query = "SELECT ".$filas." FROM ".$tabla;
  121. }
  122. else{
  123. $this->cadena_query = "SELECT ".$filas." FROM ".$tabla." WHERE ".$where." = '".$valor."'";
  124. }
  125. $this->array_mysql[$this->contador] = mysql_query($this->cadena_query);
  126. }
  127. /**
  128. * Ingrese el numero de consulta que desea recuperar en array
  129. *
  130. * @param int $identificador
  131. * @return array
  132. */
  133. public function Array_Query($identificador){
  134. return $this->array_mysql[$identificador];
  135. }
  136. }

  137. ?>
Para usar esto tenemos que tenes los directorios de la siguiente manera:

Carpeta "Proyecto"
  1. -index.php
  2. -config.inc.php
  3. -Modelo
  • -Conexion.tpl
  1. -Vista
  2. -Clases
  • -BaseDeDatos.class.php
  • -ConectarMysql.class.php

En el index cargamos nuestras clases y podemos segun el siguiente ejemplo

  1. $NuevaConexion = new ConectarMysql("Mysql");
  2. $NuevaConexion->Registrar("vendedores","usuario,password,nombre,apellido,dni,estado","ck,123456,nm,ap,424,1");
  3. $NuevaConexion->Modificar("tabla","login,password","server,4321","id_client","1");
  4. $NuevaConexion->Eliminar("tecnicos","id","5","1");
  5. $NuevaConexion->Consultar("clientse164","*","id_client","1");
  6. $NuevaConexion->Consultar("clientse164","*","id_client","5");
  7. Esto es para rescaratar los datos y va en la capa controlador como
  8. un objeto de recopilacion de array
  9. while($cadena = mysql_fetch_array($NuevaConexion->Array_Query("0")))
  10. {
  11. echo $cadena[log];
  12. }
  13. while($cadena2 = mysql_fetch_array($NuevaConexion->Array_Query("1")))
  14. {
  15. echo $cadena2[log];
  16. }
Espero Les sea de utilidad y comenten si podemos mejorarla o si les fue de utlidad

Saludos

No hay comentarios:

Publicar un comentario