elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Aporte] Clase generica para BD
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Aporte] Clase generica para BD  (Leído 2,528 veces)
danny920825

Desconectado Desconectado

Mensajes: 175


Ver Perfil WWW
[Aporte] Clase generica para BD
« en: 28 Junio 2017, 14:08 pm »

Hola Gente. Aquí les traigo un pequeño aporte y viene acompañado de una peticion de ayuda para mejorarlo. La escencia es una clase generica para trabajar con BD que hemos estado construyendo mis amigos y yo como método de aprendizaje. Esta es la clase:

Código
  1. <?php
  2.  
  3. include './conf/bd.php';
  4.  
  5. /**
  6.  * BD
  7.  */
  8. class Bd
  9.  
  10. {
  11.    private $mysqli;
  12.  
  13.    public function getMysqli()
  14.    {
  15.        return $this->mysqli;
  16.    }
  17.  
  18.    public function setMysqli($mysqli)
  19.    {
  20.        $this->mysqli = $mysqli;
  21.    }
  22.  
  23.   public static function conectar()
  24.    {
  25.        $connect = Conn::connectar(); //Esto auto-instancia la clase Conn y ejecuta el metodo 'connectar()'
  26.        $bd = new Bd();
  27.        $bd->setMysqli(new mysqli($connect->getHost(), $connect->getUsername(), $connect->getPassword(), $connect->getBd()));
  28.        return $bd; //Te da la instancia del objeto bd.
  29.    }
  30.  
  31.    public static function Insert($tabla, $array)
  32.    {
  33.        $bd = bd::conectar();
  34.        $_query = "";
  35.        $_query = "insert INTO $tabla (" . implode(', ', array_keys($array)) . ' ) values (';
  36.  
  37.        foreach ($array as $key => $value) {
  38.            if (is_numeric($value)) {
  39.                $_query .= ', ' . $value;
  40.            } else {
  41.                $_query .= ", '" . $value . "'";
  42.            }
  43.        }
  44.        $_query = str_replace('(,', '(', $_query);
  45.        $_query .= ')';
  46.  
  47.  
  48.        $bd->execute('insertar', $_query);
  49.  
  50.    }
  51.  
  52.    public static function select($tabla, $params, $orderby=false, $select=false)
  53.    {
  54.        $bd = bd::conectar();
  55.        if(!$select) {
  56.            $sql = "SELECT * FROM $tabla ";
  57.        }
  58.        else{
  59.            $sql = "SELECT $select FROM \"$tabla\" ";
  60.        }
  61.        $sql .= Bd::getWhere($params);
  62.        if ($orderby)
  63.        {
  64.            $sql .= Bd::getOrderBy($orderby);
  65.        }
  66.        $bd->execute('Seleccionar', $sql);        
  67.    }
  68.  
  69.    public static function delete($table, $parm)
  70.    {
  71.        $bd=bd::conectar();
  72.        $sql = "DELETE FROM \"$table\" ";
  73.        $sql .= Bd::getWhere($parm);
  74.        $bd->execute("Eliminar", $sql);
  75.    }
  76.  
  77.    private function getWhere($params)
  78.    {
  79.        if (count($params) == 0)
  80.            return "";
  81.  
  82.        $sql = " WHERE (";
  83.        foreach ($params as $i => $val) {
  84.            $op = $i != 0 ? isset($val['op']) ? $val['op'] : "AND" : "";
  85.            $cond = isset($val['cnd']) ? $val['cnd'] : "=";
  86.            $col = $val['col'];
  87.            $val = '"' . $val['value'] . '"';
  88.            $sql .= " $op $col $cond $val";
  89.        }
  90.        $sql .= " )";
  91.        return $sql;
  92.    }
  93.  
  94.    private function getOrderBy($params)
  95.    {
  96.        if (count($params) == 0)
  97.            return "";
  98.        $sql = " ORDER BY (";
  99.  
  100.        foreach ($params as $i => $val) {
  101.            $op = $i != 0 ? "," : "";
  102.            $cond = isset($val['cnd']) ? $val['cnd'] : "ASC";
  103.            $col = $val['col'];
  104.            $sql .= " $op  $cond   ";
  105.        }
  106.  
  107.        $sql .= " )";
  108.        return $sql;
  109.    }
  110.  
  111.      private function execute($type, $query)
  112.    {
  113.        $consulta = $this->getMysqli()->query($query) or die ("Error al $type: <br>" . $this->getMysqli()->error);
  114.        return $consulta;
  115.  
  116.    }
  117.  
  118. }
  119.  
  120.  
  121. ?>
  122.  
Para usarla, solo la incluyen y pueden hacer
Código
  1. Bd::metodo($tabla, $args)
y Aqui les dejo los ejemplos para que vean el uso antes de mostrarle donde necesito su ayuda. Asi colaboramos entre todos que no me gusta siempre venir a pedir (aunque hoy tambien es el caso) esta vez me gustaria aportar algo de acorde a mi nivel y mis pocos conocimientos.

Ejemplos de Uso:

Código
  1. //Ejemplo de Insertar:
  2. $datos = array("nombre"=>$this->nombre, "usuario"=>$this->usuario, "password"=>$cifrar, "roll"=>$this->roll);
  3. $insertar = Bd::Insert("usuarios", $datos);
  4.  
  5. //Ejemplo de select (el asc lo cambias por cualquier forma de ordenar en mysql)
  6. $where = [["col"=>"usuario", "value"=>$this->usuario], ["col"=>"nombre", "value"=>$this->nombre, "op"=>"OR"]];
  7. $order = [["col"=>"usuario", "cnd"=>"asc"]];
  8. $check = Bd::select("usuarios", $where);
  9.  
  10. //Ejemplo de Delete
  11. $where = [["col"=>"usuario", "value"=>$this->usuario], ["col"=>"nombre", "value"=>$this->nombre, "op"=>"OR"]];
  12. $delete = Bd::delete("usuarios", $where);
  13.  

La funcion para el update aun no esta lista, por eso no la puse aqui. Si alguien se anima a completarla, sientase a gusto.


« Última modificación: 28 Junio 2017, 22:49 pm por danny920825 » En línea

"Los que reniegan de Dios es por desesperación de no encontrarlo".
   Miguel de Unamuno
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Clase que Captura el Inicio y Cierre de Procesos [Aporte] [WMI]
.NET (C#, VB.NET, ASP)
Keyen Night 0 2,051 Último mensaje 28 Septiembre 2011, 22:20 pm
por Keyen Night
[Aporte] ....::: Clase Arrays del paquete java.util :::...
Java
horny3 0 4,135 Último mensaje 24 Septiembre 2012, 06:43 am
por horny3
[Aporte] ....::: Clase Object del paquete java.lang :::...
Java
horny3 0 2,888 Último mensaje 1 Octubre 2012, 02:58 am
por horny3
GTX 650 TI para fuente genérica 500w.
Hardware
ScareWoW 3 4,485 Último mensaje 30 Diciembre 2013, 02:15 am
por 0x98364
C# Parámetro Clase Genérica
.NET (C#, VB.NET, ASP)
Miseryk 4 3,546 Último mensaje 16 Noviembre 2016, 07:01 am
por Novlucker
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines