int, 'limit' => int, 'total_pages' => int, 'current_page' => int] */ function getPagination($page, $total, $perPage = 10) { $page = max(1, (int)$page); $perPage = max(1, (int)$perPage); $totalPages = ceil($total / $perPage); // Ensure page doesn't exceed total pages (unless total is 0) if ($totalPages > 0 && $page > $totalPages) { $page = $totalPages; } $offset = ($page - 1) * $perPage; return [ 'offset' => $offset, 'limit' => $perPage, 'total_pages' => $totalPages, 'current_page' => $page ]; } /** * Helper to build pagination link with existing query params */ function getPaginationLink($page, $queryParams = []) { $params = array_merge($_GET, $queryParams); $params['page'] = $page; return '?' . http_build_query($params); } /** * Render pagination links using Bootstrap 5. * * @param int $currentPage * @param int $totalPages * @return string HTML for pagination */ function renderPagination($currentPage, $totalPages) { if ($totalPages <= 1) { return ''; } $html = ''; return $html; }