How do I calculate the offsets for pagination?

If for limit you are referring to the count of items per page, then:

currentItems: same as limit
currentPage: floor(start / limit)
totalPages: ceil(totalItems / limit)
last: totalPages * limit
previous: (currentPage-1) * limit // Should be greater or equal to 0
next: (currentPage+1) * limit // Should be less or equal than totalPages

It's just an approximation...


I have gone through lots of articles and create very simple formula for pagination

offset = (limit * page no) - limit

For example, if the limit is 5

LIMIT 5
    page 1 
        offset : no (No need to use offset)
        (5 - 1) - 5
         select * from users limit 5

    page 2
        offset : 5
        (5 * 2) - 5
        select * from users limit 5 offset 5

    page 3 
        offset 10
        (5 * 3) - 5
        select * from users limit 5 offset 10

    page 4 
        offset 15
        (5 * 4) - 5
        select * from users limit 5 offset 15

select * from table name limit 5 offset value (calculated from the formula)

this is worked for me


If you work with mysql its

LIMIT offset, items_per_page

To calculate the offset u can use

$offset = ($page - 1) * $items_per_page;

Then replace the $page accordingly.

Last

$last_offset = ($totalPages - 1) * $items_per_page;

Previous

$previous_offset = (($currentPage - 1) - 1) * $items_per_page;

Next

$next_offset = (($currentPage + 1) - 1) * $items_per_page;

EDIT :

if ($previous_offset > 0) echo '<a href="?start='.$previous_offset.'&limit='.$items_per_page.'>prev</a>';


if ($next_offset <= $totalPages * $items_per_page) echo '<a href="?start='.$next_offset.'&limit='.$items_per_page.'">prev</a>';

Tags:

Php

Pagination