Limit links to display in PHP and Bootstrap pagination

0

Good morning! I would like some help to limit the amount of links and display in pagination. My links are displayed like this:

Previous 1 2 3 4 5 Next

As the number of links does not get too large, I'd like it to look like this:

Previous 1 2 ... Next

Previous ... 3 4 5 ... Next

Previous ... 6 7 Next

My php + bootstrap code:

$pagina = (isset($_GET['pagina'])) ? (int)$_GET['pagina'] : 1;

$sql_pagina = "SELECT * FROM posts";     
$result_pagina = $conexao->prepare($sql_pagina);
$result_pagina->execute();
$numTotal = $result_pagina->rowCount();

$quantidade = 5;

$num_pagina = ceil($numTotal/$quantidade);

$inicio = ($pagina * $quantidade) - $quantidade;

...
código HMTL
...

<?php
$pagina_anterior = $pagina -1;
$pagina_posterior = $pagina + 1;
?>
<nav align="center" aria-label="Page navigation" class="nav-pagination" style="margin-bottom: 20px;">
    <ul class="pagination">
       <li>
       <?php 
       if($pagina_anterior != 0) { ?>
          <a href="http://www.arturluz.com/?pagina=<?php echo $pagina_anterior; ?>" aria-label="Previous">
             <span aria-hidden="true">Anterior</span>
          </a>
       <?php } else { ?>
             <span aria-hidden="true">Anterior</span>
       <?php } ?>
       </li>
       <?php 
           for($i = 1; $i < $num_pagina + 1; $i++){ ?>
                    <li><a href="http://www.arturluz.com/?pagina=<?php echo $i; ?>"><?php echo $i; ?></a></li>
       <?php } ?>
       <li>
           <?php 
           if($pagina_posterior <= $num_pagina) { ?>
              <a href="http://www.arturluz.com/?pagina=<?php echo $pagina_posterior; ?>" aria-label="Previous">
                 <span aria-hidden="true">Próximo</span>
              </a>
           <?php } else { ?>
              <span aria-hidden="true">Próximo</span>
            <?php } ?>
         </li>
      </ul>
    </nav>

Can anyone help me? Thanks!

    
asked by anonymous 31.01.2018 / 14:24

1 answer

0

You do not need for to do this, because you set the variables pagina_anterior and pagina_posterior .

Replace this for:

<?php 
   for($i = 1; $i < $num_pagina + 1; $i++){ ?>
   <li><a href="http://www.arturluz.com/?pagina=<?php echo $i; ?>"><?php echo $i; ?></a></li>
 <?php } ?>

so:

<?php 
if($pagina > 2){
    echo "<li><span>...</span></li>"; // a partir da página 3 será necessário colocar os 3 pontos
}

if($pagina > 1)
echo "<li><a href='http://www.arturluz.com/?pagina=".$pagina_anterior."'>".$pagina_anterior."</a></li>";
echo "<li><a href='http://www.arturluz.com/?pagina=".$pagina."'>".$pagina."</a></li>";
if($pagina_posterior <= $num_pagina)
echo "<li><a href='http://www.arturluz.com/?pagina=".$pagina_posterior ."'>".$pagina_posterior."</a></li>";

if($pagina_posterior < $num_pagina){
    echo "<li><span>...</span></li>"; // se a próxima página for igual ultima página não será necessário colocar os 3 pontos
}
?>

Your code will look like this: (EDIT)

<?php 

$pagina = (isset($_GET['pagina'])) ? (int)$_GET['pagina'] : 1;

$sql_pagina = "SELECT * FROM posts";     
$result_pagina = $conexao->prepare($sql_pagina);
$result_pagina->execute();
$numTotal = $result_pagina->rowCount();

$quantidade = 5;

$num_pagina = ceil($numTotal/$quantidade);

$inicio = ($pagina * $quantidade) - $quantidade;
?>
...
código HMTL
...

<?php
$pagina_anterior = $pagina -1;
$pagina_posterior = $pagina + 1;
?>
<nav align="center" aria-label="Page navigation" class="nav-pagination" style="margin-bottom: 20px;">
<ul class="pagination">
   <li>
   <?php 
   if($pagina_anterior != 0) { ?>
      <a href="http://www.arturluz.com/?pagina=<?php echo $pagina_anterior; ?>" aria-label="Previous">
         <span aria-hidden="true">Anterior</span>
      </a>
   <?php } else { ?>
         <span aria-hidden="true">Anterior</span>
   <?php } ?>
   </li>
   <?php
        if($pagina > 2){
            echo "<li><span aria-hidden='true'>...</li>";
        }
        if($pagina > 1){
        echo "<li><a href='http://www.arturluz.com/?pagina=".$pagina_anterior."'>".$pagina_anterior."</a></li>";
        }
        echo "<li><a href='http://www.arturluz.com/?pagina=".$pagina."'>".$pagina."</a></li>";
        if($pagina_posterior <= $num_pagina){
            echo "<li><a href='http://www.arturluz.com/?pagina=".$pagina_posterior ."'>".$pagina_posterior."</a></li>"; 
        }
        if($pagina_posterior < $num_pagina){
            echo "<li><span aria-hidden='true'>...</li>";
        }
        ?>
   <li>
       <?php 
       if($pagina_posterior <= $num_pagina) { ?>
          <a href="http://www.arturluz.com/?pagina=<?php echo $pagina_posterior; ?>" aria-label="Previous">
             <span aria-hidden="true">Próximo</span>
          </a>
       <?php } else { ?>
          <span aria-hidden="true">Próximo</span>
        <?php } ?>
    </li>
</ul>
</nav>
    
31.01.2018 / 15:33