<?php
global $con;
$get_mov = "SELECT * FROM movies";
$run_mov = mysqli_query($con, $get_mov);
$number_of_movies = mysqli_num_rows($run_mov);
$number_of_pages = ceil($number_of_movies/4);
if (!isset($_GET['page'])) {
$page = 1;
}
else {
$page = $_GET['page'];
}
$this_page_first_result = ($page-1)*4;
$get_mov = "SELECT * FROM movies order by movie_released DESC LIMIT " .
$this_page_first_result. ',' . 4;
$run_mov = mysqli_query($con, $get_mov);
while ($row_mov = mysqli_fetch_array($run_mov)) {
$mov_id = $row_mov['movie_id'];
$mov_desc = $row_mov['movie_desc'];
$mov_title = $row_mov['movie_title'];
$mov_cat = $row_mov['movie_cat'];
echo "
<article id ='post-8045' class='article'>
<h4><a href='single.php?mov_id=$mov_id' style='text-
decoration:none'>$mov_title</a></h4>
<p>$mov_desc</p>
</article>
";
}
?>
<nav class="float-right">
<ul class="pagination">
<li class="page-item"><a class="page-link" href="?
page=<?php $pagep = $page-1; echo $pagep; ?>" aria-label="Previous"><span
aria-hidden="true">«</span></a></li>
<?php
for($page=1;$page<=$number_of_pages;$page++) {
echo "<li class='page-item'><a href='index.php?
page=$page' class='page-link' style='text-
decoration:none;color:black;'>$page</a></li>";
}
?>
<li class="page-item"><a class="page-link" href="?
page=<?php $pagen = $page+1; echo $pagen; ?>" aria-label="Next"><span
aria-hidden="true">»</span></a></li>
</ul>
</nav>
This is my code...I have too many pages to be shown so they are making a long line like..1 2 3 4 5 6 7 8 9 10 11 12 and so on. Moreover the next button query is also not working... I want to limit those as << 4 5 6 7 8 9 >> ...instead of that... I Searched the whole web and youtube and contacted all peers i know..but found nothing... More info: "movies" is my database name.
OK, so you want to limit the number of page links in your pagination. First of all, you need to formulate your requirement, in your question you only say "I want to limit those as << 4 5 6 7 8 9 >>" which is not a sufficient specification to work with. So let's try with this specification:
So now we have to find an algorithm that's simple enough, yet fulfils all those requirements. One way to do this would be
$start = max(min($k-2, $n-5), 1);
$end = min($start+5, $n);
Full code with test:
function print_pagination($n, $k)
{
printf("%d pages, we are on %d:
", $n, $k);
$start = max(min($k-2, $n-5), 1);
$end = min($start+5, $n);
for ($i=$start; $i<=$end; $i++) {
if ($i==$k)
printf('%d ', $i);
else
printf('<a href="...">%d</a> ', $i);
}
echo("
");
}
print_pagination(10, 1);
print_pagination(10, 3);
print_pagination(10, 6);
print_pagination(10, 10);
print_pagination(3, 1);
print_pagination(3, 2);
print_pagination(3, 3);