Denny Biasiolli Website

Suddivisione delle news in pagine

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.

google webmaster tools

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).'">< '.traduci('Prec.').'</a></span>';
echo '<span class="elencoPagineNum"><a href="./?sezione=news&pag=1"><< '.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').' >></a></span>';
echo '<span class="elencoPagineNum floatDestra"><a href="./?sezione=news&pag='.($pagina+1).'">'.traduci('Succ.').' ></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!

Contacts

DB di Denny Biasiolli
Corso Giacomo Matteotti, 24
12038 Savigliano (CN) - Italy
P.IVA IT03918020045

Need to get in touch with me? No problem! Just shoot me an email. I'm always happy to chat about life, technology, or anything in between. And if you're feeling really adventurous, you can even try sending a carrier pigeon. Just don't be surprised if it gets lost on the way.