PHP: Simple Pagination

This is a simple pagination snippet I wrote for a Drupal module I was working on. I’ve “unDruaplized” it and now it’s completely independent.

The function will calculate the number of pages to display based on $total and $shown. In addition, it'll append the corresponding page number to the provided $url.

This function takes 4 params:

  • (int) $total - total number of results. 100 in our example
  • (int) $page - the page number you're currently on. using $_GET['p'] in our example
  • (int) $shown - number results to display per page. 10 results per page in our example
  • (str) $url - the url each link should have. ?p= in our example

100(results) / 10(per page) = 10(pages)

NOTE: All page numbers are incremented by one. This means, the function assumes URL 0 as page 1.

Example Usage:

echo handle_pagination(100, (int)$_GET['p'], 10, '?p=');

HTML Output

The following is an example of the markup our snippet below will generate

Which should produce something like the following:

1 2 3 4 5 ... next › last »

Snippet

Like what you read? Give Sean Wragg a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.