[Ayuda] Funcion PHP con parametros opcionales

Iniciado por danny920825, 7 Junio 2017, 22:14 PM

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

danny920825

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

class select($tabla, $array[,$where])
{

}


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

No se si me hago entender. Por favor ayuda
"Los que reniegan de Dios es por desesperación de no encontrarlo".
   Miguel de Unamuno

tosk

Prueba algo así, es un poco rudimentario y se puede mejorar mucho más... pero igual te ayuda.

Código (php) [Seleccionar]

<?php
class test 
{
    public function 
select($tabla$params = [])
    {
        
$sql 'SELECT * FROM ' $tabla;

        
$firstTime true;
        foreach (
$params as $key => $param) {
            if (
$firstTime) {
                
$sql .= ' WHERE ';
                
$firstTime false;
            } else {
                
$sql .= ' AND ';
            }
            
$sql .= $key ' = "' $param '"';
        }

        return 
$sql ';';
    }
}

$test = new Test();
// Ejemplo 1 - SELECT * FROM usuarios WHERE user = "Danny";
echo $test->select('usuarios', ['user' => 'Danny']);

// Ejemplo 2 - SELECT * FROM usuarios WHERE user = "Danny" AND role = "admin" AND is_active = "1";
echo $test->select('usuarios', [
    
'user' => 'Danny',
    
'role' => 'admin',
    
'is_active' => true
]);
?>





danny920825

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

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->getMysqli()->query($_query) or die ("Error al insertar: <br>".$bd->getMysqli()->connect_error);

       
    }


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
"Los que reniegan de Dios es por desesperación de no encontrarlo".
   Miguel de Unamuno