I am currently doing a paging system and I have an error that the “NEXT” button continues to work despite having reached the last page, when clicking this it takes me to an extra page without content.
The “next” button should disappear on page 2 but it is continuous and sends me to page 3 where there is no content.
CODE
$display_pagina = 5; if(isset($_GET['pagina'])){ $pagina = $_GET['pagina']; } else{ $pagina = 1; } $inicio = ($pagina-1)*$display_pagina; $query = "SELECT p.*, t.name, e.status FROM post AS p LEFT JOIN tipo as t ON (t.id = p.tipo_id) LEFT JOIN estado as e ON (e.id = p.estado_id) ORDER BY id DESC LIMIT $inicio, $display_pagina"; $result = mysqli_query($link, $query); <div class="info-list" id="info-list-id"> <?php while($post = mysqli_fetch_assoc($result)){ ?> <a class="boton" href="info/<?php echo $post['url_slug']?>"> <div class="info"> <div class="info-content"> <img src="<?php echo '/images/info/' . $post['image']; ?>" class="info-image"/> <p class="info-title"><?php echo $post['title'];?></p> <p class="info-type"><?php echo $post['name']?></p> </div> </div> </a> <?php } ?> </div> <div class="catalogo-pagination"> <?php $query = "SELECT p.*, t.name, e.status FROM post AS p LEFT JOIN tipo as t ON (t.id = p.tipo_id) LEFT JOIN estado as e ON (e.id = p.estado_id)"; $result = mysqli_query($link, $query); $total_registros = mysqli_num_rows($result); $total_paginas = ceil($total_registros/$display_pagina); if($pagina>1){ echo "<li><a href='info.php?pagina=".($pagina-1)."'>Previous</a></li>"; } for ($i=1; $i<=$total_paginas; $i++) { echo "<li><a href='info.php?pagina=".$i."'>".$i."</a></li>"; }; if($i>$pagina){ echo "<li><a href='info.php?pagina=".($pagina+1)."' class='button'>NEXT</a></li>"; } echo "</ul>"; ?>
Advertisement
Answer
Since you only want to show the next link if the total pages are higher than the current page number, you can change the condition to:
if ($total_paginas > $pagina) { echo "<li><a href='info.php?pagina=".($pagina+1)."' class='button'>NEXT</a></li>"; }