<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>Comments on snippet: 'Pagination Madness'</title>
<link>http://snipplr.com</link>
<description>Snipplr comments feed'</description>
<language>en-us</language>
<pubDate>Thu, 23 May 2013 08:27:49 GMT</pubDate>
<item>
<title>iroybot said on 4/24/09</title>
<link>http://snipplr.com/view/12077/pagination-madness/</link>
<description><![CDATA[ shame on me... use PHPs native ceil() function (instead of this crazy +.499 guessing, I did...) ]]></description>
<pubDate>Fri, 24 Apr 2009 09:32:26 GMT</pubDate>
<guid>http://snipplr.com/view/12077/pagination-madness/</guid>
</item>
<item>
<title>iroybot said on 2/20/09</title>
<link>http://snipplr.com/view/12077/pagination-madness/</link>
<description><![CDATA[ Let's say we want to show 4 items per page. Let's calculate this through:

first case: we have 8 items. 8 divided by 4 is 2 so we need two pages. good

second case: we have 9 items. 9 divided by 4 gives us 2.25.

So we clearly need a 3rd page here. That's why I compare two values here: the actual division result and one with an extra  0.499 added what gives us 2.749. (lines 2-4)
lines 5-6 we round both results in order to find out if they get rounded to different integers.
if they differ by 1 we have a scenario where we want another page, so we pick the bigger result as our page number. (lines 7-8). if they get rounded to the same integer we are happy and use the smaller number.

note: if we added 0.5 instead of 0.499 the first case would give us 2.5 which would have been rounded to 3. but actually we are fine with 2 pages for 8 items.

now that we know our actual page count we can do something like

while($i = 1;$i <= $pages; $i++) { print '<a href="?page=' . $i . '">'; } ]]></description>
<pubDate>Fri, 20 Feb 2009 20:23:08 GMT</pubDate>
<guid>http://snipplr.com/view/12077/pagination-madness/</guid>
</item>
</channel>
</rss>