Paginazione PHP con HTTP POST

Creato il 07 marzo 2012 da Nightfly

La paginazione è uno dei metodi più gettonati per ripartire i contenuti dinamici di un sito Web su più pagine. Spesso, però, per ragioni di sicurezza (e non solo) risulta più conveniente sostituire il GET con il POST, avvalendosi di un pò di codice Javascript da utilizzare lato client.

Ecco un il codice (testato e funzionante):

$query = "SELECT * FROM Utenti";
        
$risultato = $mysqli->query($query);
$count = mysqli_num_rows($risultato);
$per_pagina = 30; //secondo parametro di LIMIT
$tot_pagine = ceil($count / $per_pagina); //approssima la divisione all'intero
$pagina_corrente = 1;
        
 if(isset($_POST['pagina']) & is_numeric($_POST['pagina']))
 {
         $pagina_corrente = $_POST['pagina'];
 }
$primo = ($pagina_corrente - 1) * $per_pagina; //primo parametro di LIMIT
$query = $query."ORDER BY C.Cognome ASC LIMIT $primo, $per_pagina";
        
$risultato = $mysqli->query($query1);

lato server, mentre lato client il codice Javascript è così definito:

<script type="text/javascript">
function invia()
{
   document.loginform4.method="post";
   document.loginform4.action="visualizzacontatti.php";
   document.loginform4.submit();
}
</script>

Inoltre, il numero di pagina calcolato nell'ambito del codice PHP verrà salvato in un campo di input hidden:

<input type="hidden" name="pagina" id="pagina" value="<?php echo $pagina_corrente?>"/>

I numeri di pagina cliccabili saranno così definiti:

<div id="paginazione">
   <p align ="center">
   <?php
   if($pagina_corrente == 1 || $count == 0) //se siamo nella prima pagina oppure non vi sono record
   {
        
      echo "<< Precedente";
   }
   else
   {
      $pagina_precedente = ($pagina_corrente - 1);
      ?>
      <a href ="javascript:invia()" onclick="document.loginform4.pagina.value=<?php echo $pagina_precedente?>"><?php echo "<< Precedente"?></a>
      <?php
   }
  
   echo ' Pagine: ';
  
   for($i = 1; $i <= $tot_pagine; $i++)
   {
      if($i == $pagina_corrente)
      {
         echo "[$i]";
      }
      else
      {
      ?>  
      <a href ="javascript:invia()" onclick="document.loginform4.pagina.value=<?php echo $i?>"><?php echo $i ?></a>
      <?php
      }
   }
   if($pagina_corrente == $tot_pagine) // se siamo nell'ultima pagina
   {
      echo "Successiva >>";
   }
   else
   {
      $prossima_pagina = ($pagina_corrente + 1);
      ?>
      <a href ="javascript:invia()" onclick="document.loginform4.pagina.value=<?php echo $prossima_pagina?>"><?php echo "Successiva >>"?></a>
      <?php
   }
   ?>
   </p>
   </div>

Enjoy!


Potrebbero interessarti anche :

Possono interessarti anche questi articoli :