Sto aiutando un mio amico a fare uno pseudo blog all'interno del quale vuole inserire degli articoli. Ormai è ultimato tutto, dal CMS alla gestione delle sessioni, tuttavia ho un problema nel limitare il numero di pagine della navigazione. Mi spiego meglio...
Cliccando su "Archivio" viene eseguita questa query:
- Codice: Seleziona tutto
$query = "SELECT * FROM Articoli ORDER BY id_art DESC LIMIT $start,$step";
Con "$start" indico l'articolo dal quale limitare la query e "$step" è il numero effettivo di articoli da visualizzare per pagina. In seguito estraggo i record dalla tabella risultante e li visualizzo. Vi risparmio la parte di visualizzazione. Subito dopo c'è la parte con cui ho un problema.
- Codice: Seleziona tutto
<table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2">
<tbody><tr><td style="text-align: left; width: 33%;">
<?
$current_page = $start / $step;
if ($start>0){
$back_page = (($start - $step) / $step) + 1;
echo "<a href=index.php?id=surf&page=$back_page>Successivi</a>";
}
$query = "SELECT count(*) AS tot FROM Articoli";
$result = mysql_query($query, $db);
$row = mysql_fetch_array($result);
$pages = intval(($row[tot]-1) / $step)+1;
?>
</td><td style="text-align: center; width: 33%;">
<?
$i = 0;
while($i < $pages){
$page = $i + 1;
echo $page;
if ($i == $current_page){
echo "<a href=index.php?id=surf&page=$page><u>" . $page . "</u></a> ";
}else{
echo "<a href=index.php?id=surf&page=$page>" . $page . "</a> ";
}
$i++;
}
?>
</td><td style="text-align: right; width: 33%;">
<?
if ($start + $step < $row[tot]){
$next_page = (($start + $step) / $step) + 1;
echo "<a href=index.php?id=surf&page=$next_page>Precedenti</a>";
}
?>
</td></tr></table>
Il mio problema è sul while dove vengono visualizzate le pagine. Se sono 3 viene scritto "1 2 3" se sono 20 viene scritto "1 2 3 ... 20". Vorrei limitare il numero di pagine per 5 o 10 alla volta o se possibile farlo come vengono divise qui sul forum. Il fatto è che non mi viene in mente come implementarlo. Avevo pensato agli array ma non so se siano abbastanza performanti (si dice?).
Se non vi è chiaro qualcosa del codice ditemelo così posso chiarirvelo. Grazie in anticipo.