I have the following method that creates and returns markup for my pagination links in PHP.
public function getPaginationLinks($options) {
if($options[\'
You may also look at Zend_Paginator, which handles lots of these types of things for you.
Consider "logarithmic pagination", as described here (PHP code included):
How to do page navigation for many, many pages? Logarithmic page navigation
You could do (on page 15)
[View Previous] 12 13 14 [15] 15 17 18 [View More]
Where the [View More] link fetches the rest (or just a few more) page links. This keeps things uncluttered while allowing the user to navigate all the pages.
Example (after clicking View Previous)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 15 17 18 [View More]
or (just show a few more) [View More] 7 8 9 10 11 12 13 14 [15] 15 17 18 [View More]
When I say "fetch" I mean use javascript to create links to the other pages w/o reloading the page
You just display the current page plus the previous and the following x
(say 4) pages.
If you're on Page 1:
1 2 3 4 5
Page 35:
31 32 33 34 35 36 37 38 39
Page 70:
66 67 68 69 70
You could also add a quick link to the first and last page using «
and »
for instance.
Example:
$x = 4;
for ($i = $currentPage - $x; $i < $currentPage; $i++)
{
if ($i >= 1) { /* show link */}
else { /* show ellipsis and fix counter */ $i = 1; }
}
/* show current page number without link */
for ($i = $currentPage + 1; $i < $currentPage + $x; $i++)
{
if ($i <= $totalPages) { /* show link */}
else { /* show ellipsis and break */ break; }
}
You can also implement Infinite History / Pagination, which is uber cool. =)
UPDATE: A more elegant version of this @ Codepad.