I create php pagination for articles it shows all pages over 1k and getting longers.
I want to do something like this prev 1234 ... 9999 next.
I tried this answer Limit pagination page number but could not make it work.
codes :
if(isset($_POST['records-limit'])){
$CurrentPage['records-limit'] = $_POST['records-limit'];
}
$limit = isset($CurrentPage['records-limit']) ? $CurrentPage['records-limit'] : 10;
$page = (isset($_GET['page']) && is_numeric($_GET['page']) ) ? $_GET['page'] : 1;
$paginationStart = ($page - 1) * $limit;
$authors = $db->getPosts("SELECT * FROM posts LEFT JOIN users ON posts.post_userId = users.user_id LIMIT $paginationStart, $limit")->fetchAll();
// Get total records
$sql = $db->getPosts("SELECT count(post_id) AS post_id FROM posts")->fetchAll();
$allRecrods = $sql[0]['post_id'];
// Calculate total pages
$totoalPages = ceil($allRecrods / $limit);
// Prev + Next
$prev = $page - 1;
$next = $page + 1;
Pagination
<ul class="pagination justify-content-end">
<li class="page-item <?php if($page <= 1){ echo 'disabled'; } ?>">
<a class="page-link" href="<?php if($page <= 1){ echo '#'; } else { echo "?page=" . $prev; } ?>">Geri</a>
</li>
<?php for($i = 1; $i <=$totoalPages; $i++ ): ?>
<li class="page-item <?php if($page == $i) {echo 'active'; } ?>">
<a class="page-link" href="posts.php?page=<?php echo $i; ?>"> <?php echo $i; ?> </a>
</li>
<?php endfor; ?>
<li class="page-item <?php if($page >= $totoalPages) { echo 'disabled'; } ?>">
<a class="page-link" href="<?php if($page >= $totoalPages){ echo '#'; } else {echo "?page=". $next; } ?>">İleri</a>
</li>
</ul>