Limitar número de páginas em paginação
Estou tentando fazer um script para paginação mas a minha codificação exibe um número infinito de páginas (Anterior | 1 | 2 | 3 | 4 | 5 | 6 | 7, etc) e eu queria limitar esse número à apenas três (Primeira | 1 | 2 | 3 | Última), e conforme fosse carregando as demais páginas iria incrementando esses três números ( ao clicar na página 3 por exemplo apareceria Primeira | 3 | 4 | 5 | Última). Para estilização estou usando o Bootstrap4. Meu código está assim:
<?php
$itens_por_pagina = 5; // Quantidade de itens por página
if(isset($_GET['pagina'])){ $pagina = intval($_GET['pagina']); } else { $pagina = "0"; }; // Pega a página atual
$sql = "SELECT COUNT(*) as t
FROM tabela";
$prepara = $PDO->prepare($sql);
$prepara->execute();
$row = $prepara->fetchAll(PDO::FETCH_ASSOC);
foreach ($row as $key => $linha) {
$num_total = $linha["t"];
}
$num_paginas = ceil($num_total/$itens_por_pagina);
if($num_paginas >0){
$sql = "SELECT
tabela.campo1,
tabela.campo2, etc...
FROM tabela
LIMIT $pagina, $itens_por_pagina";
$res = $PDO->query( $sql );
$row = $res->fetchAll(PDO::FETCH_ASSOC);
foreach ($row as $key => $linha) {
$campo = $linha["campo"];
echo $campo; etc...
}
}
?>
<nav aria-label="Navegação de página exemplo">
<ul class="pagination">
<li class="page-item">
<a class="page-link" href="restrito.php?id=acoes&pagina=0" style="background-color: orange; color: #ffffff;">Primeira</a>
<?php
for($i=0;$i<$num_paginas;$i++){
$estilo = "";
if($pagina == $i)
$estilo = "class=\"active\""; // classe do Bootstrap para páginas ativas
?>
<li <?php echo $estilo; ?> class="page-item">
<a class="page-link" href="restrito.php?id=acoes&pagina=<?php echo $i; ?>">
<?php echo $i+1 ?>
</a>
<?php
}
?>
<li class="page-item">
<a class="page-link" href="index.php?pagina=<?php echo $num_paginas-1; ?>" style="background-color: orange; color: #ffffff;">
Última
</a>
</nav>
<?php
$itens_por_pagina = 5; // Quantidade de itens por página
if(isset($_GET['pagina'])){ $pagina = intval($_GET['pagina']); } else { $pagina = "0"; }; // Pega a página atual
$sql = "SELECT COUNT(*) as t
FROM tabela";
$prepara = $PDO->prepare($sql);
$prepara->execute();
$row = $prepara->fetchAll(PDO::FETCH_ASSOC);
foreach ($row as $key => $linha) {
$num_total = $linha["t"];
}
$num_paginas = ceil($num_total/$itens_por_pagina);
if($num_paginas >0){
$sql = "SELECT
tabela.campo1,
tabela.campo2, etc...
FROM tabela
LIMIT $pagina, $itens_por_pagina";
$res = $PDO->query( $sql );
$row = $res->fetchAll(PDO::FETCH_ASSOC);
foreach ($row as $key => $linha) {
$campo = $linha["campo"];
echo $campo; etc...
}
}
?>
<nav aria-label="Navegação de página exemplo">
<ul class="pagination">
<li class="page-item">
<a class="page-link" href="restrito.php?id=acoes&pagina=0" style="background-color: orange; color: #ffffff;">Primeira</a>
<?php
for($i=0;$i<$num_paginas;$i++){
$estilo = "";
if($pagina == $i)
$estilo = "class=\"active\""; // classe do Bootstrap para páginas ativas
?>
<li <?php echo $estilo; ?> class="page-item">
<a class="page-link" href="restrito.php?id=acoes&pagina=<?php echo $i; ?>">
<?php echo $i+1 ?>
</a>
<?php
}
?>
<li class="page-item">
<a class="page-link" href="index.php?pagina=<?php echo $num_paginas-1; ?>" style="background-color: orange; color: #ffffff;">
Última
</a>
</nav>
comentários (0)
suspender
Lista de Respostas:
Nenhuma resposta foi publicada ainda.