Calculating item offset for pagination
this seems like very simple maths but somehow, my brain cant think ...
i am trying to implement pagination and will need to calculate the item offset to use in limiting my result set. i am having problems calculating what index the first item of the page should have.
eg.
with 1 page having 10 items
page 1 will have items 1 - 10
page 2 ............... 11 - 20
page 3 ............... 21 - 30
i thought of
offset = page * itemsPerPage + 1
but this will not be the case for page 1. there must be a formula for this? am using PHP/Zend_Paginator/Doctrine2 but this should be language independent
wonder if this should be in the the maths stack exchange site
Use offset = (page - 1) * itemsPerPage + 1
.
Honestly depends. I'm no PHP person, but I'll put both out there. If you are pulling your records in to some form of collection (list, array, etc.) then your formula should be:
offset = (page - 1) * itemsPerPage
This is because most (again, I'm not a PHP person) arrays and lists use 0 for their first element. If they do not use 0 for their first element and/or you're pulling from a table or something else where the IDs start at 1, then it should be:
offset = (page - 1) * itemsPerPage + 1
I hope that's clear and helps.