Napisałem coś takiego... może ci się przyda. Tablica $strona przechowuje tablicę z numerami stron, a stała $ilosc_wypisanych określa ile wypisujemy stron, a resztę kropkujemy.
Plik
strona.php<?
//Tworzymy tablicę $strona
// Dla przykładu przypiszę jej nr strony do indeksu tablicy
for ($i = 0 ; $i < 50 ; $i++)
{
$nr = $i + 1;
$strona[$i] = $nr;
}
$ilosc_stron = count($strona); // Skoro mamy tablicę to zliczamy ilość stron $ilosc_wypisanych = 9; // ilość stron wypisanych (resztę kropkujemy)
// Pobieranie aktualnie wybranej strony
if (isset($_GET['akt_str'])) $akt_str = $_GET['akt_str']; else $akt_str = 1;
// Teraz sprawdzamy od której ($start) do której ($end) strony wyświetlimy adresy stron
if ($akt_str==1) { $start = 1; $end = $start + $ilosc_wypisanych - 1; }
else if ($akt_str==$ilosc_stron) { $end = $ilosc_stron; $start = $end - $ilosc_wypisanych + 1; }
else
{
$start = $akt_str-1;
$end = $akt_str+1;
$ilosc_iter = 3; // liczba, jedna przed i jedna po
for ( ; ; )
{
if ($end<$ilosc_stron && isset($strona[$end])) { $end++; $ilosc_iter++; } if ($ilosc_iter == $ilosc_wypisanych) break;
if ($start>1
&& isset($strona[$start-1
])) { $start--; $ilosc_iter++; } if ($ilosc_iter == $ilosc_wypisanych) break;
}
}
// Sprawdzanie czy będziemy pokazywać kropki (...)
if ($start==1) $pokaz_start = false;
else $pokaz_start = true;
if ($end == $ilosc_stron) $pokaz_end = false;
else $pokaz_end = true;
// Właściwa pętla wyświetlająca strony
for ($i = 0 ; $i < $ilosc_stron ; $i++)
{
if ($i == 0 && $akt_str != 1 && $pokaz_start)
$pokaz1 = true;
else $pokaz1 = false;
if ($i == $ilosc_stron-1 && $akt_str != $ilosc_stron && $pokaz_end)
$pokaz2 = true;
else $pokaz2 = false;
// pierwsza iteracja więc wypisujemy Back
if ($i == 0)
{
if ($akt_str>1)
$back_str = $akt_str - 1;
else $back_str = $akt_str;
echo "<a href=\"strona.php?action=back&akt_str=$back_str\">Back</a> | "; }
if ($pokaz1) echo " ... | ";
if ($strona[$i] >= $start && $strona[$i] <= $end)
{
if ($akt_str == $strona[$i]) echo $strona[$i]." | "; else echo "<a href=\"strona.php?akt_str=".$strona[$i]."\">".$strona[$i]."</a> | "; }
if ($pokaz2) echo " ... | ";
// ostatnia iteracja więc wypisujemy Next
if ($i == $ilosc_stron - 1)
{
if ($akt_str<$ilosc_stron)
$next_str = $akt_str + 1;
else $next_str = $akt_str;
echo "<a href=\"strona.php?action=next&akt_str=$next_str\">Next</a>"; }
}
echo "Aktualnie wybrany numer srony: <strong>$akt_str</strong>";
?>