i\'m a newbie in php especially on making pagination.
my question is, how to make paging like stackoverflow\'s pagination?
i mean paging like this :
1
This will generate the numbers as per above with current = 7, pages = 25. Replace the numbers with links to get an actual pagination index.
$current = 7;
$pages = 25;
$links = array();
if ($pages > 3) {
// this specifies the range of pages we want to show in the middle
$min = max($current - 2, 2);
$max = min($current + 2, $pages-1);
// we always show the first page
$links[] = "1";
// we're more than one space away from the beginning, so we need a separator
if ($min > 2) {
$links[] = "...";
}
// generate the middle numbers
for ($i=$min; $i<$max+1; $i++) {
$links[] = "$i";
}
// we're more than one space away from the end, so we need a separator
if ($max < $pages-1) {
$links[] = "...";
}
// we always show the last page
$links[] = "$pages";
} else {
// we must special-case three or less, because the above logic won't work
$links = array("1", "2", "3");
}
echo implode(" ", $links);
Output:
1 ... 5 6 7 8 9 ... 25