Oct 20, 2010
Di recente ho aggiunto la suddivisione delle news in pagine in modo da velocizzarne sensibilmente il caricamento, come potete vedere nell'immagine sottostante.
Vi voglio rendere partecipi di questa creazione, ecco il codice:
Per iniziare ho creato la funzione che calcola il totale delle pagine in base al numero di record e alle news per pagina.
function calcolaTotPagine($totaleRecord, $totaleNewsPerPagina)
{
$resto = $totaleRecord % $totaleNewsPerPagina;
return(intval($totaleRecord / $totaleNewsPerPagina) + ($resto>0 ? 1 : 0));
}
Dopo ho creato la funzione che mostra il numero delle pagine.
function mostraPagine($totRecord, $pagina, $newsPerPagina)
{
$totPagine = calcolaTotPagine($totRecord, $newsPerPagina);
$inizioCont=$pagina-2;//($inizioCont<1 ? $inizioCont=1 : null);
$fineCont=$pagina+2;//($fineCont>$totPagine ? $fineCont=$totPagine : null);
echo '<div class="elencoPagine">';
if($pagina!=1)
{
echo '<span class="elencoPagineNum floatSinistra"><a href="./?sezione=news&pag='.($pagina-1).'">&lt; '.traduci('Prec.').'</a></span>';
echo '<span class="elencoPagineNum"><a href="./?sezione=news&pag=1">&lt;&lt; '.traduci('Prima pagina').'</a></span>';
}
for($i=$inizioCont; $i<=$fineCont; $i++)
{
echo '<span class="elencoPagineNum">';
if($i>=1 && $i<=$totPagine)
{
if($i!=$pagina)
echo '<a href="./?sezione=news&pag='.$i.'">';
echo $i;
if($i!=$pagina)
echo '</a>';
}
echo '</span>';
}
if($pagina!=$totPagine)
{
echo '<span class="elencoPagineNum"><a href="./?sezione=news&pag='.$totPagine.'">'.traduci('Ultima pagina').' &gt;&gt;</a></span>';
echo '<span class="elencoPagineNum floatDestra"><a href="./?sezione=news&pag='.($pagina+1).'">'.traduci('Succ.').' &gt;</a></span>';
}
echo '</div>';
}
A questo punto basta richiamare la funzione mostraPagine() per visualizzare il numero di pagine.
mostraPagine($result->num_rows, $pagAttuale, $totNewsPerPagina);
Ovviamente sarà sufficiente creare un foglio di stile adatto per formattare la visualizzazione delle pagine ed il gioco è fatto!