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!