false, 'mensaje' => 'Acceso denegado']); exit(); } $busqueda = isset($_GET['busqueda']) ? trim($_GET['busqueda']) : ''; $limite = 10; $pagina = isset($_GET['pagina']) ? (int)$_GET['pagina'] : 1; $offset = ($pagina - 1) * $limite; $binds = []; $whereConditions = [ "s.estado = 'realizada'", "s.fecha_respuesta >= SYSDATE - 30", "s.tipo_solicitud NOT IN ('VALIDACION_PERSONAL', 'REPORTE_ACCIDENTE', 'CAMBIO_INFORMACION', 'PLATAFORMA')" ]; if (!empty($busqueda)) { $busquedaTerm = '%' . $busqueda . '%'; $whereConditions[] = "(s.codigo_ticket LIKE :busq1 OR s.nombre_sitio LIKE :busq2 OR s.id_sitio LIKE :busq3)"; $binds[':busq1'] = $busquedaTerm; $binds[':busq2'] = $busquedaTerm; $binds[':busq3'] = $busquedaTerm; } $whereClause = implode(' AND ', $whereConditions); $sql = "SELECT s.*, u.nombre AS nombre_usuario FROM solicitudes s JOIN usuarios u ON u.id = s.usuario_id WHERE $whereClause ORDER BY s.fecha_respuesta DESC, s.codigo_ticket DESC"; $rows = db_select_to_array($sql, $binds); // Limpiar buffer y enviar HTML ob_clean(); if (empty($rows)) { echo "