$_GET['category'] ?? '1', // Default category 'term' => $_GET['term'] ?? '', // Default term 'sort' => $_GET['sort'] ?? '1', // Default sort 'dir' => $_GET['dir'] ?? 'asc', // Default direction 'page' => $_GET['page'] ?? 0 // Default to first page ]; // If no query parameters exist (initial page load), redirect to set default ones if (empty($_GET)) { redirectWithFilters($filters); } $rowLimit = 5; $facilityDataSet = new FacilityDataSet(); if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Check if filters/sorting changed $filtersChanged = ( $filters['category'] !== ($_POST['filterCat'] ?? $filters['category']) || $filters['term'] !== ($_POST['filter'] ?? $filters['term']) || $filters['sort'] !== ($_POST['sort'] ?? $filters['sort']) || $filters['dir'] !== ($_POST['dir'] ?? $filters['dir']) ); $filters['category'] = filter_input(INPUT_POST, 'filterCat', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? $filters['category']; $filters['term'] = filter_input(INPUT_POST, 'filter', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? $filters['term']; $filters['sort'] = filter_input(INPUT_POST, 'sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? $filters['sort']; $filters['dir'] = filter_input(INPUT_POST, 'dir', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? $filters['dir']; // Reset page if filters changed $filters['page'] = $filtersChanged ? 0 : $_POST['paginationButton'] ?? $filters['page']; redirectWithFilters($filters); } $view->pageData = $facilityDataSet->fetchAll( ['category' => $filters['category'], 'term' => $filters['term']], ['sort' => $filters['sort'], 'dir' => $filters['dir']] ); $view->paginator = new Paginator($rowLimit, $view->pageData); $view->pageNumber = $view->paginator->getPageFromUri(); $view->pageData = $view->paginator->getPage($view->pageNumber); // Send result count to view $view->dbMessage = $view->paginator->countPageResults($view->pageNumber) == 0 ? "No results" : $view->paginator->countPageResults($view->pageNumber) . " result(s)"; // Redirect function function redirectWithFilters($filters) { $queryString = http_build_query($filters); header("Location: ?" . $queryString); exit; }