Ejemplo n.º 1
0
 public static function getComida($pagina = 0, $paginasVisualizadas = 10, $orden = null, $dir = null, $filtro = null, $valor = null, $filtro2 = null)
 {
     // Conectamos a la BD
     $conexion = restDB::connectDB();
     // Si el filtro no viene vacio
     if ($filtro !== "" && $filtro !== null && $valor !== "" && $valor !== null) {
         // Sentencia Select
         $seleccion = "SELECT * FROM comida WHERE LOWER({$filtro}) LIKE LOWER('%{$valor}%')";
         $cuentaFilas = "SELECT count(id) FROM comida WHERE LOWER({$filtro}) LIKE LOWER('%{$valor}%')";
     } else {
         // Si el filtro viene vacio
         // Sentencia Select
         $seleccion = "SELECT * FROM comida";
         $cuentaFilas = "SELECT count(id) FROM comida";
     }
     // Si la hay un segundo filtro, se filtra el valor por esa columna tambien
     if ($filtro2 !== "" && $filtro2 !== null && $valor !== null && $valor !== "") {
         $seleccion .= " OR LOWER({$filtro2}) LIKE LOWER('%{$valor}%')";
         $cuentaFilas .= " OR LOWER({$filtro2}) LIKE LOWER('%{$valor}%')";
     }
     // En el caso de que haya algun tipo filtro por orden
     if ($orden !== "" && $orden !== null) {
         $seleccion .= " ORDER BY {$orden} {$dir}";
     } else {
         // Si no hay ningun filtro de orden se ordena alfabeticamente
         $seleccion .= " ORDER BY nombre {$dir}";
     }
     // Offset y Limit to para las paginas
     $offset = $pagina * $paginasVisualizadas;
     $seleccion .= " LIMIT {$paginasVisualizadas} OFFSET {$offset}";
     // Ejecutamos el Select con query (que devuelve los datos, exec solo devuelve filas afectadas)
     $consulta = $conexion->query($seleccion);
     // Ejecuta el contar filas sql
     $consultaFilas = $conexion->query($cuentaFilas);
     // Guardamos el resultado en numFilas y lo pasa a string
     $numFilas = $consultaFilas->fetchColumn();
     // Guardamos el numero de filas en el atributo del objeto
     Comida::$numRows = $numFilas;
     // Inicializamos $comida como array antes del While para evitar error
     $comidas = [];
     // Recorremos todos los registros
     while ($registro = $consulta->fetchObject()) {
         // Creamos objetos y los metemos en el array comida
         $comidas[] = new Comida($registro->nombre, $registro->precio, $registro->ingredientes, $registro->imagen, $registro->fecha, $registro->id);
     }
     // Devolvemos el array comida
     return $comidas;
 }