Il for alla fine ci sta per farti vedere il funzionamento ipotizzando che clicchi sulla pagina successiva.
Codice PHP:
<?php
/**
* Sistuisce il numero della pagina per i link della lista pagine
*/
function buildUrlPages($url, $page) {
// Se deve restituire la pagina numero 1, quando
// l'utente si trova nella pagina 2 elimina &page=1
// dal link
if ($page <= 1) {
return preg_replace(array("/&page=(.*?)/is", "/\?page=(.*?)/is"), "", $url);
}
// Se l'url è pulito da variabili get
// aggiunge ?page=[numero pagina]
if (strpos($url, "?") === false) {
return "{$url}?page={$page}";
}
// Se l'url comprende query string
// lo aggiunge in coda
return "{$url}&page={$page}";
}
/**
* Genera i link per le pagine di topics, userlist etc...
*/
function getListPages($count, $perPage, $page, $url) {
// Se i risultati della pagina sono minori del numero di oggetti
// da visualizzare per pagina ferma lo script visto che la pagina
// da visualizzare è solo una
if ($count < $perPage) {
return;
}
// Calcola il numero totale di pagine
$pages = ceil($count / $perPage);
// Stampa il numero di pagine
echo "Pagine ($pages):";
// Ritorna la pagina precedente
// se mi trovo alla 2°+ pagina
if ($page > 1) {
echo " <a href='" . buildUrlPages($url, ($page - 1)) . "'>« Precedente</a";
}
// Link per pagina, in questo caso 5
// << Precedente 2 3 4 5 ... 10 Successiva >>
$linksPerPage = 5;
// Pagine precedenti e Pagine successive
// Per ottenere l'effetto << Precedente 1 ... 3 4 5 6 7 ... 10 Successiva >>
$prevPages = $page - floor($linksPerPage / 2);
$nextPages = $page + floor($linksPerPage / 2);
// Se $prevPages ritorna un numero negativo
// Assegna la pagina 1
if ($prevPages <= 0) {
$prevPages = 1;
$nextPages = $prevPages + $linksPerPage - 1;
}
// Impedisce di raggiungere un numero maggiore di pagine
// rispetto a quelle calcolato dalla funzione
if ($nextPages > $pages) {
$nextPages = $pages;
$prevPages = $pages - $linksPerPage + 1;
if($prevPages <= 0) {
$prevPages = 1;
}
}
if ($nextPages == 0) {
$nextPages = $pages;
}
// Prima pagina
if ($prevPages > 1) {
echo " <a href='" . buildUrlPages($url, 1) . "'>1</a>";
if(($prevPages - 1) != 1) {
echo " ...";
}
}
// Pagina corrente e pagine precedenti e successive
// nell'intervallo assegnato a $linksPerPage:
// 2 3 4 <b>5</b> 5 6 7
for ($i = $prevPages; $i <= $nextPages; ++$i) {
$tplVar["i"] = $i;
if($page == $i) {
echo " $i";
} else {
echo " <a href='" . buildUrlPages($url, $i) . "'>$i</a>";
}
}
// Ultima pagina
if ($nextPages < $pages) {
if (($nextPages + 1) == $pages) {
echo " ...";
}
echo " <a href='" . buildUrlPages($url, $pages) . "'>$pages</a>";
}
// Pagina successiva
if ($page < $pages) {
echo " <a href='" . buildUrlPages($url, ($page + 1)) . "'>Successiva »</a>";
}
}
$elementiTotali = 10;
$elementiPerPagina = 1;
$url = "http://localhost/prova3.php?variabile=inutile&seconda=inutile"; // o semplicemente http://localhost/prova3.php
for ($paginaAttuale = 1; $paginaAttuale <= 10; $paginaAttuale++) {
getListPages($elementiTotali, $elementiPerPagina, $paginaAttuale, $url);
echo "<hr>";
}
?>