Try making a re-useable portion, like this for example:
class Pager
{
function getPagerData($numHits, $limit, $page)
{
$numHits = (int) $numHits;
$limit = max((int) $limit, 1);
$page = (int) $page;
$numPages = ceil($numHits / $limit);
$page = max($page, 1);
$page = min($page, $numPages);
$offset = ($page - 1) * $limit;
$ret = &new stdClass;
$ret->offset = $offset;
$ret->limit = $limit;
$ret->numPages = $numPages;
$ret->page = $page;
return $ret;
}
}
$page = $_GET["page"];
$limit = 20;
$total = @mysql_num_rows( @( "select * from table where key=$value order by field desc" ) );
$pager = Pager::getPagerData( $total, $limit, $page );
if (1 == $pager->page);
else
$pages .= "<a href=\"$PHP_SELF?fid=$fid&page=" . ($page - 1) . "\">Previous</a>";
for ($i = 1; $i <= $pager->numPages; $i++)
{
$pages .= " | ";
if ($i == $pager->page)
$pages .= "$i";
else
$pages .= "<a href=\"$PHP_SELF?fid=$fid&page=$i\">$i</a>";
}
if ($page == $pager->numPages)
$pages .= " |";
else
$pages .= " | <a href=\"$PHP_SELF?fid=$fid&page=" . ($page + 1) . "\">Next</a>";