"", 1 => "", 2 => "", 3 => "", 4 => "", 5 => "", 6 => "", 7 => "", 8 => "" ]; $sortArray = [ 0 => "", 1 => "", 2 => "", 3 => "", 4 => "", 5 => "", 6 => "", 7 => "", 8 => "" ]; $rowLimit = 5; $filterArray[$_GET['category'] ?? null] = $_GET['term'] ?? null; $sortArray[$_GET['sort'] ?? null] = $_GET['dir'] ?? null; $facilityDataSet = new FacilityDataSet(); if(isset($_POST['paginatorButton'])) { var_dump($_POST); } if ((isset($_POST['filter']) && isset($_POST['filterCat']) && (isset($_POST['dir'])) && (isset($_POST['sort'])))) { $filter = filter_input(INPUT_POST, 'filter', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? ''; $filterKey = filter_input(INPUT_POST, 'filterCat', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? ''; $direction = filter_input(INPUT_POST, 'dir', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? 'asc'; // Default to 'asc' $sortKey = filter_input(INPUT_POST, 'sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? '1'; // Default to 'title' $page = filter_input(INPUT_POST, 'paginationButton', FILTER_SANITIZE_NUMBER_INT) ?? 0; // Default page to 0 on new filter $filterArray[$filterKey] = $filter; $sortArray[$sortKey] = $direction; var_dump($filterArray); //redirect($filter, $filterArray, $direction, $sortArray, $page); } function redirect($filter, $filterArray, $direction, $sortArray, $page) : void { // Set the filter and generate the new URI //$filterSet = $facilityDataSet->setFilterUri($applyFilters, array_search($applyFilters, $filterArray)); $filterSet = setUri($filter, array_search($filter, $filterArray), $direction, array_search($direction, $sortArray), $page); // Parse the existing query string $queryParams = []; parse_str($filterSet["newUri"], $queryParams); // Add or overwrite the 'page' parameter $queryParams['page'] = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, [ 'options' => ['default' => 0, 'min_range' => 0] // Default to 0 for the first page ]); // Build the updated query string $newQueryString = http_build_query($queryParams); // Redirect with the updated URI //var_dump("Redirecting to: {$filterSet["path"]}?{$newQueryString}"); header("Location: {$filterSet["path"]}?{$newQueryString}"); exit; } $view->pageData = $facilityDataSet->fetchAll($filterArray, $sortArray); var_dump($filterArray, $sortArray); $view->paginator = new Paginator($rowLimit, $view->pageData); // Initialize paginator $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)"; function setUri($filter, $category, $direction, $sort, $page) { $uri = $_SERVER['REQUEST_URI']; $uriComp = parse_url($uri); $params = []; // Parse existing query parameters if (isset($uriComp['query'])) { parse_str($uriComp['query'], $params); } else { $params = array(); } // Avoid unnecessary redirection if sort and filter is already correct if ( (isset($params['sort']) && $params['sort'] === (string)$sort && isset($params['dir']) && $params['dir'] === $direction) && (isset($params['category']) && $params['category'] === (string)$category && isset($params['term']) && $params['term'] === $filter) ) { exit; } // Update parameters if (!empty($category)) { $params['category'] = $category; } if (!empty($filter)) { $params['term'] = $filter; } if (!empty($sort)) { $params['sort'] = $sort; } if (!empty($direction)) { $params['dir'] = $direction; } if (!empty($filter)) { $params['page'] = $page; } // Rebuild the query string $newUri = http_build_query($params); var_dump($newUri); // Redirect to the updated URI // Use the current path or root return [ 'newUri' => $newUri, 'path' => $uriComp['path'] ?? '/' ]; }