Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: danny920825 en 7 Junio 2017, 22:14 pm



Título: [Ayuda] Funcion PHP con parametros opcionales
Publicado por: danny920825 en 7 Junio 2017, 22:14 pm
Hola a todos. He estado trabajando en mis basicos conocimientos de POO y me di a la tarea de crear una clase generica para las BD con sus respectivos métodos para insertar, eliminar, comprobar, actualizar, etc. Ya logre hacer el método de insertar, pero ahora quiero hacer uno para hacer un select de la BD que me pueda servir por ejemplo para saber si existe un usuario en una BD. El punto es que estoy tratando de hacer algo asi

Código
  1. class select($tabla, $array[,$where])
  2. {
  3.  
  4. }
  5.  

Pero el punto es que no se como hacer que el tercer argumento sea opcional. O sea que la consulta pueda ser
Código
  1. select * from usuarios
o así
Código
  1. select * from usuarios where user = 'Danny'

No se si me hago entender. Por favor ayuda


Título: Re: [Ayuda] Funcion PHP con parametros opcionales
Publicado por: tosk en 12 Junio 2017, 10:49 am
Prueba algo así, es un poco rudimentario y se puede mejorar mucho más... pero igual te ayuda.

Código
  1. <?php
  2. class test
  3. {
  4.    public function select($tabla, $params = [])
  5.    {
  6.        $sql = 'SELECT * FROM ' . $tabla;
  7.  
  8.        $firstTime = true;
  9.        foreach ($params as $key => $param) {
  10.            if ($firstTime) {
  11.                $sql .= ' WHERE ';
  12.                $firstTime = false;
  13.            } else {
  14.                $sql .= ' AND ';
  15.            }
  16.            $sql .= $key . ' = "' . $param . '"';
  17.        }
  18.  
  19.        return $sql . ';';
  20.    }
  21. }
  22.  
  23. $test = new Test();
  24. // Ejemplo 1 - SELECT * FROM usuarios WHERE user = "Danny";
  25. echo $test->select('usuarios', ['user' => 'Danny']);
  26.  
  27. // Ejemplo 2 - SELECT * FROM usuarios WHERE user = "Danny" AND role = "admin" AND is_active = "1";
  28. echo $test->select('usuarios', [
  29.    'user' => 'Danny',
  30.    'role' => 'admin',
  31.    'is_active' => true
  32. ]);
  33. ?>
  34.  




Título: Re: [Ayuda] Funcion PHP con parametros opcionales
Publicado por: danny920825 en 13 Junio 2017, 12:59 pm
Gracias por responder y perdon por la demora, es que en Cuba no siempre hay internet. Al final terminé haciendo algo parecido. La duda era como pasar parámetros opcionales y eso lo descubrí 2 horas depues de publicar, pero ya no estaba online. El código terminó así:
Código
  1. public static function Insert($tabla, $array)
  2.    {
  3.        $bd = bd::conectar();
  4.        $_query="";
  5.        $_query = "insert into {$tabla} (" . implode(', ', array_keys($array)) . ' ) values (';
  6.  
  7.        foreach ($array as $key => $value) {
  8.            if (is_numeric($value)) {
  9.                $_query .= ', ' . $value;
  10.            } else {
  11.                $_query .= ", '" . $value . "'";
  12.            }
  13.        }
  14.        $_query = str_replace('(,', '(', $_query);
  15.        $_query .= ')';
  16.  
  17.  
  18.        $bd->getMysqli()->query($_query) or die ("Error al insertar: <br>".$bd->getMysqli()->connect_error);
  19.  
  20.  
  21.    }
  22.  

Y ese fue el más facil. Ahora estoy haciendo el de eliminar y aunque me dieron un código que funciona, no me gusta el array que hay que pasarle, por eso estoy intentando hacer uno mio que sea más cómodo. Gracias de todas formas