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; }