query("SELECT id, nombre FROM ruletas ORDER BY id DESC"); return $res ? $res->fetch_all(MYSQLI_ASSOC) : []; } /** Helper para bind dinámico (mysqli requiere referencias) */ function stmt_bind_params(mysqli_stmt $stmt, string $types, array &$params): void { if ($types === '' || !$params) return; $bind = [$types]; foreach ($params as $k => $v) { $bind[] = &$params[$k]; } call_user_func_array([$stmt, 'bind_param'], $bind); } $ruletas = all_ruletas($conn); $ruleta_id = (int)($_GET['ruleta_id'] ?? 0); $q = trim((string)($_GET['q'] ?? '')); $desde = (string)($_GET['desde'] ?? ''); $hasta = (string)($_GET['hasta'] ?? ''); $where = "1=1"; $params = []; $types = ""; // Filtros if ($ruleta_id) { $where .= " AND j.ruleta_id=?"; $types .= "i"; $params[] = $ruleta_id; } if ($q !== '') { $where .= " AND (p.nombre LIKE CONCAT('%',?,'%') OR j.ip_address LIKE CONCAT('%',?,'%'))"; $types .= "ss"; $params[] = $q; $params[] = $q; } if ($desde !== '') { $where .= " AND j.fecha_juego >= ?"; $types .= "s"; $params[] = $desde . " 00:00:00"; } if ($hasta !== '') { $where .= " AND j.fecha_juego <= ?"; $types .= "s"; $params[] = $hasta . " 23:59:59"; } // Export CSV if (($_GET['export'] ?? '') === 'csv') { header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename=jugadas.csv'); $out = fopen('php://output', 'w'); fputcsv($out, ['ID','Fecha','Ruleta','Premio','IP','User Agent']); $sql = "SELECT j.id, j.fecha_juego, r.nombre AS ruleta, p.nombre AS premio, j.ip_address, j.user_agent FROM jugadas j LEFT JOIN ruletas r ON r.id=j.ruleta_id LEFT JOIN premios p ON p.id=j.premio_id WHERE $where ORDER BY j.id DESC"; $stmt = $conn->prepare($sql); stmt_bind_params($stmt, $types, $params); $stmt->execute(); $res = $stmt->get_result(); while ($row = $res->fetch_assoc()) { fputcsv($out, [ $row['id'], $row['fecha_juego'], $row['ruleta'], $row['premio'], $row['ip_address'], $row['user_agent'] ]); } fclose($out); exit; } // Paginación $page = max(1, (int)($_GET['page'] ?? 1)); $pp = 25; $off = ($page - 1) * $pp; // Total $sqlCount = "SELECT COUNT(*) c FROM jugadas j LEFT JOIN ruletas r ON r.id=j.ruleta_id LEFT JOIN premios p ON p.id=j.premio_id WHERE $where"; $stmt = $conn->prepare($sqlCount); stmt_bind_params($stmt, $types, $params); $stmt->execute(); $total = (int)$stmt->get_result()->fetch_assoc()['c']; // Página actual $sql = "SELECT j.id, j.fecha_juego, r.nombre AS ruleta, p.nombre AS premio, j.ip_address, j.user_agent FROM jugadas j LEFT JOIN ruletas r ON r.id=j.ruleta_id LEFT JOIN premios p ON p.id=j.premio_id WHERE $where ORDER BY j.id DESC LIMIT $pp OFFSET $off"; $stmt = $conn->prepare($sql); stmt_bind_params($stmt, $types, $params); $stmt->execute(); $rows = $stmt->get_result()->fetch_all(MYSQLI_ASSOC); $pages = (int)ceil($total / $pp); // Query para export sin "page" $exportQuery = $_GET; unset($exportQuery['page']); $exportQuery['export'] = 'csv'; ?> Jugadas | Admin Ruletas

Historial de Jugadas

Limpiar
IDFechaRuletaPremioIPUser Agent
Sin registros
1): ?>