4 Commits

Author SHA1 Message Date
boris
214bfe20ac added functionality for CRUD 2024-12-02 20:33:27 +00:00
boris
00a29b9db7 images 2024-12-01 18:15:49 +00:00
boris
6430dc6904 idk 2024-12-01 18:15:35 +00:00
boris
c650dbce01 changed <button> paginators to <a> paginators. 2024-11-29 21:47:38 +00:00
10 changed files with 73 additions and 105 deletions

View File

@@ -10,6 +10,49 @@ class FacilityDataSet {
$this->_dbHandle = $this->_dbInstance->getDbConnection(); $this->_dbHandle = $this->_dbInstance->getDbConnection();
} }
/**
* @param $data
* @return bool
*/
public function addFacility($data) : bool {
$sqlQuery = "
INSERT INTO ecoFacilities
(title,
category,
description,
houseNumber,
streetName,
county,
town,
postcode,
lng,
lat,
contributor)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
;";
$stmt = $this->_dbHandle->prepare($sqlQuery);
// Ensures only one value is returned per column name
$stmt->setFetchMode(\PDO::FETCH_ASSOC);
// Initialize index for binding
$bindIndex = 1;
// Bind other filters
for ($i = 1; $i <= 8; $i++) { // Assuming 8 other filters
$value = !empty($data[$i]) ? "%" . $data[$i] . "%" : "%";
$stmt->bindValue($bindIndex++, $value, \PDO::PARAM_STR);
}
return !($stmt->rowCount());
}
public function deleteFacility($id) : bool {
$sqlQuery = "DELETE FROM ecoFacilities WHERE id = ?";
$stmt = $this->_dbHandle->prepare($sqlQuery);
$stmt->setFetchMode(\PDO::FETCH_ASSOC);
$stmt->bindValue(1, $id, \PDO::PARAM_INT);
$stmt->execute();
return !($stmt->rowCount() == 0);
}
/** /**
* @param $filterArray * @param $filterArray
* @return array * @return array

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

@@ -1,65 +1,28 @@
<div> <div>
<div class="row mb-2"> <div class="row mb-2">
<!-- Form for Pagination --> <!-- Form for Pagination -->
<form class="col-auto m-auto" method="POST" action=""> <div id="paginationButtons" class="col-auto m-auto btn-group">
<div class="btn-group"> <!-- Start Button -->
<!-- Start Button --> <a class="btn btn-outline-primary" href="?page=0" <?= $view->pageNumber <= 0 ? 'disabled' : '' ?>><i class="bi bi-chevron-double-left"></i> Start</a>
<button type="submit" name="pageButtons" value="0" <!-- Back Button -->
class="btn btn-outline-primary" <a class="btn btn-outline-primary" href="?page=<?=max($view->pageNumber - 1, 0)?> " <?= $view->pageNumber <= 0 ? 'disabled' : '' ?>><i class="bi bi-chevron-left"></i> Back</a>
<?= $view->pageNumber <= 0 ? 'disabled' : '' ?>> <!-- Dynamic Page Buttons -->
<i class="bi bi-chevron-double-left"></i> Start <?php
</button> $totalPages = $view->paginator->getTotalPages();
var_dump($totalPages);
<!-- Back Button --> for ($i = $view->pageNumber - 2; $i <= $view->pageNumber + 2; $i++) {
<button type="submit" name="pageButtons" value="<?= max($view->pageNumber - 1, 0) ?>" if ($i >= 0 && $i < $totalPages): ?>
class="btn btn-outline-primary" <a href="?page=<?= $i ?>"
<?= $view->pageNumber <= 0 ? 'disabled' : '' ?>> class="btn <?= $i === $view->pageNumber ? 'btn-dark' : 'btn-outline-primary' ?>"
<i class="bi bi-chevron-left"></i> Back <?= $i === $view->pageNumber ? 'disabled' : '' ?>>
</button> <?= $i + 1 ?>
</a>
<!-- Dynamic Page Buttons --> <?php endif;
<?php } ?>
$totalPages = $view->paginator->getTotalPages(); <!-- Forward Button -->
for ($i = $view->pageNumber - 2; $i <= $view->pageNumber + 2; $i++) { <a class="btn btn-outline-primary" href="?page=<?=min($view->pageNumber + 1, $totalPages)?> " <?= $view->pageNumber >= $totalPages - 1 ? 'disabled' : '' ?>>Forward <i class="bi bi-chevron-right"></i></a>
if ($i >= 0 && $i < $totalPages): ?> <!-- End Button -->
<button type="submit" name="pageButtons" value="<?= $i ?>" <a class="btn btn-outline-primary" href="?page=<?= $totalPages - 1 ?>"<?= $view->pageNumber >= $totalPages - 1 ? 'disabled' : '' ?>>End <i class="bi bi-chevron-double-right"></i></a>
class="btn <?= $i === $view->pageNumber ? 'btn-dark' : 'btn-outline-primary' ?>"
<?= $i === $view->pageNumber ? 'disabled' : '' ?>>
<?= $i + 1 ?>
</button>
<?php endif;
} ?>
<!-- Forward Button -->
<button type="submit" name="pageButtons" value="<?= min($view->pageNumber + 1, $totalPages - 1) ?>"
class="btn btn-outline-primary"
<?= $view->pageNumber >= $totalPages - 1 ? 'disabled' : '' ?>>
Forward <i class="bi bi-chevron-right"></i>
</button>
<!-- End Button -->
<button type="submit" name="pageButtons" value="<?= $totalPages - 1 ?>"
class="btn btn-outline-primary"
<?= $view->pageNumber >= $totalPages - 1 ? 'disabled' : '' ?>>
End <i class="bi bi-chevron-double-right"></i>
</button>
</div>
</form>
</div>
<!-- div class="row">
<div class="col-1 me-auto ms-auto">
<form class="form-floating" method="POST" action="">
<select name='pageDown' class="form-select" onchange="this.form.submit()">
<?php for($i=0; $i<=$view->paginator->getTotalPages()-1; $i++): ?>
<?php if($i == $view->paginator->getPageFromUri()): ?>
<?= "<option selected value='" . $i . "'>" . ($i+1) . "</option>" ?>
<?php else : ?>
<?= "<option value='" . $i . "'>" . ($i+1) . "</option>" ?>
<?php endif; ?>
<?php endfor; ?>
</select>
<label for="pageDown">Page</label>
</form>
</div> </div>
</div --> </div>
</div> </div>

BIN
images/ecoBuddy_x128.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
images/ecoBuddy_x128.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
images/ecoBuddy_x32.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
images/ecoBuddy_x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
images/ecoBuddy_x64.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
images/ecoBuddy_x64.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

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);