Ciao metto un modo artenativo a quello di spaceconte, è quello che utilizzo io...magari può tornare utile
<?php
//impaginatore
include "pager_multiselect.php";
include "config.php";
mysql_select_db("DBNAME") or die(mysql_error());
$n_result = mysql_query( "SELECT * FROM sezione Order By id DESC" );
$num_rows = mysql_num_rows($n_result);
//mi servirà; per far capire all'impaginatore dove ci troviamo
$pag = $_GET[page];
//
//stabilisco limite dei risultati mostrati ed offset dei risultati
$limite = "12";
$off = "12";
//
//qui richiamo la funzine dell'impaginatore
getPagerData($num_rows, $limite, $pag, $off);
$offset_ = $offset;
$pag = $page;
$result = mysql_query( "SELECT * FROM sezione Order By id DESC LIMIT $offset_, $limite" );
while ($row = mysql_fetch_array($result)){
//printo ciò che voglio far vedere
echo "<h1>$row[titolo]</h1>";
//puoi mettere quello che vuoi
}
?>
<?php
//nome della pagina dei risultati
$pagina_w = "paginarisultati.php";
//
//numero di pagine linkate da mostrare per visionarle direttamente, esempio di visualizzazione: pagina precedente, pagine: [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] pagina successiva
$pagine_mostr = 10;
//
//pagine da mostrare, le moltiplico se si scorre di blocco in blocco,
//quindi da 10 in 10. Si potrebbe sviluppare con un ciclo for, a voi l'onere! Per il momento l'ho fatto a mano, prevedendo di non avere più di 50 pagine di risultati!
if ($pag > $pagine_mostr*5)
$pagine_mostr = $numPages;
if ($pag > $pagine_mostr*4)
$pagine_mostr = $pagine_mostr*5;
if ($pag > $pagine_mostr*3)
$pagine_mostr = $pagine_mostr*4;
if ($pag > $pagine_mostr*2)
$pagine_mostr = $pagine_mostr*3;
if ($pag > $pagine_mostr*1)
$pagine_mostr = $pagine_mostr*2;
if ($numPages<$pagine_mostr)
$pagine_mostr = $numPages;
//
//ecco di seguito i links per navigare i risultati!
if ($pag == 1)
{
$impa .= "Pagine dei risultati: ($numPages pagine totali per $num_rows articoli)
";
} else {
$impa .= "Pagine dei risultati: ($numPages pagine totali per $num_rows articoli)
";
$impa .= "<a href=\"$pagina_w?page=".($pag-1)."\">Pagina precedente</a>";
}
for ($i = 1; $i <= $pagine_mostr; $i++) {
$impa .= " ";
if ($i == $page)
$impa .= "** - $i - **";
else {
$impa .= "<a href=\"$pagina_w?page=".$i."\">[$i]</a>";
}
}
if ($pag == $numPages){
;
}
else {
$impa .= " ";
$impa .= "<a href=\"$pagina_w?page=".($pagine_mostr+1)."\">[---]</a> <a class='linkstatico' href=\"$pagina_w?page=".($pag+1)."\">Prossima pagina</a>";
}
if ($num_rows < $limite) {
$impa = "Una pagina di risultati per $num_rows articoli
";
}
if ($num_rows == 0) {
$impa = "Nessun risultato
";
}
print $impa;
//
?>
codice su pager_multiselect.php
<?
//impaginatore
function getPagerData($numHits, $limit, $page, $off) {
global $offset,$limit,$page,$numPages,$ret,$off;
$numHits = (int) $numHits;
$limit = max((int) $limit, $off);
$page = (int) $page;
$numPages = ceil
($numHits / $limit);
$page = max($page, 1);
$page = min($page, $numPages);
$offset = ($page- 1) * $limit;
$off = $offset;
$ret = new stdClass;
$ret->offset = $offset;
$ret->limit = $limit;
$ret->numPages = $numPages;
$ret->page = $page;
return $ret;
}
?>
ciao
Dax