[Aporte] Clase generica para BD

Iniciado por danny920825, 28 Junio 2017, 14:08 PM

0 Miembros y 1 Visitante están viendo este tema.

danny920825

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 (php) [Seleccionar]

<?php

include './conf/bd.php';

/**
 * BD
 */
class Bd

{
    private 
$mysqli;

    public function 
getMysqli()
    {
        return 
$this->mysqli;
    }

    public function 
setMysqli($mysqli)
    {
        
$this->mysqli $mysqli;
    }

   public static function 
conectar()
    {
        
$connect Conn::connectar(); //Esto auto-instancia la clase Conn y ejecuta el metodo 'connectar()'
        
$bd = new Bd();
        
$bd->setMysqli(new mysqli($connect->getHost(), $connect->getUsername(), $connect->getPassword(), $connect->getBd()));
        return 
$bd//Te da la instancia del objeto bd.
    
}

    public static function 
Insert($tabla$array)
    {
        
$bd bd::conectar();
        
$_query "";
        
$_query "insert INTO $tabla (" implode(', 'array_keys($array)) . ' ) values (';

        foreach (
$array as $key => $value) {
            if (
is_numeric($value)) {
                
$_query .= ', ' $value;
            } else {
                
$_query .= ", '" $value "'";
            }
        }
        
$_query str_replace('(,''('$_query);
        
$_query .= ')';


        
$bd->execute('insertar'$_query);

    }

    public static function 
select($tabla$params$orderby=false$select=false)
    {
        
$bd bd::conectar();
        if(!
$select) {
            
$sql "SELECT * FROM $tabla ";
        }
        else{
            
$sql "SELECT $select FROM \"$tabla\" ";
        }
        
$sql .= Bd::getWhere($params);
        if (
$orderby)
        {
            
$sql .= Bd::getOrderBy($orderby);
        }
        
$bd->execute('Seleccionar'$sql);        
    }

    public static function 
delete($table$parm)
    {
        
$bd=bd::conectar();
        
$sql "DELETE FROM \"$table\" ";
        
$sql .= Bd::getWhere($parm);
        
$bd->execute("Eliminar"$sql);
    }

    private function 
getWhere($params)
    {
        if (
count($params) == 0)
            return 
"";

        
$sql " WHERE (";
        foreach (
$params as $i => $val) {
            
$op $i != ? isset($val['op']) ? $val['op'] : "AND" "";
            
$cond = isset($val['cnd']) ? $val['cnd'] : "=";
            
$col $val['col'];
            
$val '"' $val['value'] . '"';
            
$sql .= $op $col $cond $val";
        }
        
$sql .= " )";
        return 
$sql;
    }

    private function 
getOrderBy($params)
    {
        if (
count($params) == 0)
            return 
"";
        
$sql " ORDER BY (";

        foreach (
$params as $i => $val) {
            
$op $i != "," "";
            
$cond = isset($val['cnd']) ? $val['cnd'] : "ASC";
            
$col $val['col'];
            
$sql .= $op  $cond   ";
        }

        
$sql .= " )";
        return 
$sql;
    }

      private function 
execute($type$query)
    {
        
$consulta $this->getMysqli()->query($query) or die ("Error al $type: <br>" $this->getMysqli()->error);
        return 
$consulta;

    }

}


?>


Para usarla, solo la incluyen y pueden hacer
Código (php) [Seleccionar]
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 (php) [Seleccionar]

//Ejemplo de Insertar:
$datos = array("nombre"=>$this->nombre, "usuario"=>$this->usuario, "password"=>$cifrar, "roll"=>$this->roll);
$insertar = Bd::Insert("usuarios", $datos);

//Ejemplo de select (el asc lo cambias por cualquier forma de ordenar en mysql)
$where = [["col"=>"usuario", "value"=>$this->usuario], ["col"=>"nombre", "value"=>$this->nombre, "op"=>"OR"]];
$order = [["col"=>"usuario", "cnd"=>"asc"]];
$check = Bd::select("usuarios", $where);

//Ejemplo de Delete
$where = [["col"=>"usuario", "value"=>$this->usuario], ["col"=>"nombre", "value"=>$this->nombre, "op"=>"OR"]];
$delete = Bd::delete("usuarios", $where);


La funcion para el update aun no esta lista, por eso no la puse aqui. Si alguien se anima a completarla, sientase a gusto.
"Los que reniegan de Dios es por desesperación de no encontrarlo".
   Miguel de Unamuno