Siemanko, mam problem.
Pierwszy raz w życiu piszę paginację w PHP (a z samym programowaniem styczność też mam dosyć od niedawna, może z 2-3 miesiące).
Wszystko mam praktycznie gotowe, aczkolwiek pojawił się jeden problem. Ograniczam sobie ilość wyświetlanych stron w paginacji break'iem w ifie do trzech i dodaję trzy kropki.
Chciałbym, aby po kliknięciu na przykład w trójkę, przekierowywało mnie do tej strony i pokazywało kwadracik z numerem cztery i tak kolejno z każdą podstroną aż do ostatniej. Nie bardzo wiem jak się za to zabrać, kombinowałem na różne sposoby, ale nie wiem - może wy pomożecie?
[1] [2] [3] [...] [18]
Chciałbym, by po kliknięciu w trójkę działo coś takiego
[2] [3] [4] [...] [18]
<?php
$pagesLimit = 20;
function countPages($dbh, $limit) {
$stmt = $dbh->prepare("SELECT count(*) as `ile` FROM `table`");
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$pagesAmount = $result['ile'];
return floor($pagesAmount / $limit);
}
function getReview($start, $amount, $dbh) {
$stmt = $dbh->prepare("SELECT * FROM `table2`
LIMIT :start, :amount");
$stmt->bindValue(":start", (int)$start, PDO::PARAM_INT);
$stmt->bindValue(":amount", (int)$amount, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
$pageId = $_GET['page'];
$nextPage = $pageId * $pagesLimit;
$next = $pageId + 1;
$prev = $pageId - 1;
if ($prev < 0) {
$prev = 0;
}
if ($next > countPages($dbh, $pagesLimit)) {
$next = countPages($dbh, $pagesLimit);
}
for ($id = 0; $id <= countPages($dbh, $pagesLimit); $id++) {
if ($id >= 3) {
?>
<a href="#">
<p>...</p>
</a>
<a href="?page=<?php echo countPages($dbh, $pagesLimit); ?>">
<p><?php echo countPages($dbh, $pagesLimit); ?></p>
</a>
<?php
break;
}
if ($pageId == $id) {
?>
<a class="active" href="?page=<?php echo $id; ?>">
<p><?php echo $id + 1; ?></p>
</a>
<?php
} else {
?>
<a href="?page=<?php echo $id; ?>">
<p><?php echo $id + 1; ?></p>
</a>
<?php
}
}
?>
<a href="?page=<?php echo $next; ?>">
<p><i class="fa fa-angle-right" aria-hidden="true"></i></p>
</a>
<a href="?page=<?php echo countPages($dbh, $pagesLimit); ?>">
<p><i class="fa fa-angle-double-right" aria-hidden="true"></i></p>
</a>
<?php
$pageContent = ob_get_flush();
?>