Аналогично ответу менеджера, но отображает только 10 страниц по соседству с текущей страницей.
define("TOTAL_PAGES", 100);
define("FOOTER_LINK_COUNT", 10);
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
// Range check
if ( $page < 1 || $page > TOTAL_PAGES ) {
$page = 1;
}
// You can display a header here if you'd like
// Include actual content page
include("page{$page}.php");
// Generate the footer
echo "<ul>\n";
for (
// Maths! Start at the current page, minus half of the total number of links to display
// but don't go below 0 (negative pages) and don't go over the total number of pages
$i = min(
max(0, $page - ceil(FOOTER_LINK_COUNT / 2)),
TOTAL_PAGES - FOOTER_LINK_COUNT
),
$c = 1;
$c <= FOOTER_LINK_COUNT;
++$c ) {
printf("\t<li><a href='?page=%1\$d'>%1\$d</a></li>\n", $i + $c);
}
echo "</ul>";
Итак, для страницы 1 вы видите 1,2,3,4,5,6,7, 8,9,10
Для страницы 10: 6,7,8,9,10,11,12,13,14,15
Для страницы 95: 91,92,93, 94,95,96,97,98,99,100