Jump to content

Really need your help with pagination


Gruzin

Recommended Posts

Hi,

I do my own pagination its really quite easy.

[code]
// im not including much error checking this is just the basics - assuming mysql queries return results etc.
// fetch the total amount of results to work out number of pages - you could store the total pages in
// a session variable but im not going to bring sessions into this example

$sql = 'select col1, col2, col3 from table';
$res = mysql_query($sql);

$total_results = mysql_num_rows($res);
$total_per_page = 10;

// work out the number of pages, use ceil incase its not an equal divide
// need an extra page to show remaining results
$number_of_pages = ceil($total_results / $total_per_page);

// check if we have the get variable "page" indicating what page we are on
// otherwise just set it to page 1
if (isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page'] <= $number_of_pages)
    $page = $_GET['page'];
else
    $page = 1;

// construct the page links
$pagelinks = 'Page(s): ';
for ($x = 1; $x <= $number_of_pages; $x++) {
    if ($x == $page) $pagelinks .= '<b>'.$x.'</b>&nbsp;';
    else $pagelinks .= '<a href="'.$_SERVER['PHP_SELF'].'?page='.$x.'">'.$x.'</a>&nbsp;';
}
if ($page > 1) $previouslink = '<a href="'.$_SERVER['PHP_SELF'].'?page='.($page-1).'">&laquo; Previous</a>';
else $previouslink = '';

if ($page < $number_of_pages) $nextlink = '<a href="'.$_SERVER['PHP_SELF'].'?page='.($page+1).'">Next &raquo;</a>';
else $nextlink = '';

// find the starting record number
$start_record = (($total_per_page * $page) - $total_per_page);

// now we modify our original sql statement to return only the results we are displaying
$sql .= ' limit '.$start_record.', '.$total_per_page;

// re-execute
$res = mysql_query($sql);
while ($row = mysql_fetch_object($res)) {
  echo '<div id="result">'.$row->col1.' - '.$row->col2.' - '.$row->col3.'</div>'."\n";
}

echo '<div id="pageNav">'.$previouslink;
if ($nextlink != '') echo ' - ';
echo $nextlink.'<br/>'.$pagelinks.'</div>'."\n";
[/code]

I wrote this out of my head now so there may be a syntax error or two but thats how I do my simple pagination...

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.