This commit is contained in:
boris
2024-12-01 18:15:35 +00:00
parent c650dbce01
commit 6430dc6904
3 changed files with 8 additions and 45 deletions

View File

@@ -40,39 +40,6 @@ class Paginator {
]); ]);
} }
public function setPageUri($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 the page is already correct
if (isset($params['page']) && (int)$params['page'] === $page) {
exit; // Do nothing if already on the correct page
}
// Update the 'page' parameter
$params['page'] = $page;
// Rebuild the query string
$newUri = http_build_query($params);
// Redirect to the updated URI
// Use the current path or root
return
[
'newUri' => $newUri,
'path' => $uriComp['path'] ?? '/'
];
}
public function getPage(int $pageNumber): array { public function getPage(int $pageNumber): array {
if ($pageNumber < 0 || $pageNumber >= $this->_totalPages) { if ($pageNumber < 0 || $pageNumber >= $this->_totalPages) {

View File

@@ -9,6 +9,7 @@
<!-- Dynamic Page Buttons --> <!-- Dynamic Page Buttons -->
<?php <?php
$totalPages = $view->paginator->getTotalPages(); $totalPages = $view->paginator->getTotalPages();
var_dump($totalPages);
for ($i = $view->pageNumber - 2; $i <= $view->pageNumber + 2; $i++) { for ($i = $view->pageNumber - 2; $i <= $view->pageNumber + 2; $i++) {
if ($i >= 0 && $i < $totalPages): ?> if ($i >= 0 && $i < $totalPages): ?>
<a href="?page=<?= $i ?>" <a href="?page=<?= $i ?>"

View File

@@ -2,6 +2,10 @@
require_once('Models/FacilityDataSet.php'); require_once('Models/FacilityDataSet.php');
require_once("Models/Paginator.php"); require_once("Models/Paginator.php");
if(!isset($_GET['page'])) {
header("location: ?page=0");
}
$filterArray = [ $filterArray = [
0 => "", 0 => "",
1 => "", 1 => "",
@@ -18,20 +22,13 @@ $rowLimit = 5; //$_POST['rowCount'];
$facilityDataSet = new FacilityDataSet(); $facilityDataSet = new FacilityDataSet();
if (isset($_POST['pageButtons'])) {
$currentPage = (int)$_POST['pageButtons'];
} elseif (isset($_POST['pageDown'])) {
$currentPage = (int)$_POST['pageDown'];
} else {
$currentPage = 0; // Default to the first page
}
if (isset($_POST['applyFilters']) && isset($_POST['filter'])) { if (isset($_POST['applyFilters']) && isset($_POST['filter'])) {
var_dump($_POST);
$applyFilters = filter_input(INPUT_POST, 'applyFilters', FILTER_SANITIZE_STRING); $applyFilters = filter_input(INPUT_POST, 'applyFilters', FILTER_SANITIZE_STRING);
$filterKey = filter_input(INPUT_POST, 'filter', FILTER_SANITIZE_STRING); $filterKey = filter_input(INPUT_POST, 'filter', FILTER_SANITIZE_STRING);
$filterArray[$filterKey] = $applyFilters;
// Set the filter and generate the new URI // Set the filter and generate the new URI
$filterSet = $facilityDataSet->setFilterUri($applyFilters, $filterArray[$filterKey]); $filterSet = $facilityDataSet->setFilterUri($applyFilters, array_search($applyFilters, $filterArray));
// Parse the existing query string // Parse the existing query string
parse_str($filterSet["newUri"], $queryParams); parse_str($filterSet["newUri"], $queryParams);
@@ -56,8 +53,6 @@ $view->pageData = $facilityDataSet->fetchAll($filterArray);
$view->paginator = new Paginator($rowLimit, $view->pageData); $view->paginator = new Paginator($rowLimit, $view->pageData);
// Initialize paginator // Initialize paginator
$view->paginator->setPageUri($currentPage);
$view->pageNumber = $view->paginator->getPageFromUri(); $view->pageNumber = $view->paginator->getPageFromUri();
$view->pageData = $view->paginator->getPage($view->pageNumber); $view->pageData = $view->paginator->getPage($view->pageNumber);