prepare($cleanup_sql)) { $cleanup_stmt->execute(); $cleanup_stmt->close(); } // Initialize variables $ddns_id = isset($_GET['ddns_id']) ? (int) $_GET['ddns_id'] : null; $where_clause = ""; $params = []; $types = ""; // Build WHERE clause if ddns_id is specified if ($ddns_id !== null) { $where_clause = " WHERE l.ddns_entry_id = ?"; $params[] = $ddns_id; $types = "i"; } // Pagination setup $per_page = 20; $page = isset($_GET['page']) ? max(1, (int) $_GET['page']) : 1; $offset = ($page - 1) * $per_page; // Main query with conditional filtering $query = "SELECT l.*, d.ddns_fqdn FROM ddns_logs l LEFT JOIN ddns_entries d ON l.ddns_entry_id = d.id $where_clause ORDER BY l.timestamp DESC LIMIT ?, ?"; // Count query with same filtering $count_query = "SELECT COUNT(*) as total FROM ddns_logs l $where_clause"; // Prepare and execute count query $count_stmt = $link->prepare($count_query); if ($ddns_id !== null) { $count_stmt->bind_param($types, ...$params); } $count_stmt->execute(); $total = $count_stmt->get_result()->fetch_assoc()['total']; $count_stmt->close(); // Calculate total pages $pages = ceil($total / $per_page); // Prepare main query $stmt = $link->prepare($query); if ($ddns_id !== null) { $params[] = $offset; $params[] = $per_page; $stmt->bind_param($types . "ii", ...$params); } else { $stmt->bind_param("ii", $offset, $per_page); } $stmt->execute(); $logs = $stmt->get_result()->fetch_all(MYSQLI_ASSOC); $stmt->close(); ?> <?= $ddns_id ? "Logs for DDNS #$ddns_id" : "All DDNS Logs" ?>

FQDN Action IP Details Timestamp
1): ?> Previous Next

Back to