i want numbers for pagination between previous and next

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
iamroming
Forum Commoner
Posts: 27
Joined: Sun Jan 31, 2010 4:02 am
Location: Hyderabad, India
Contact:

i want numbers for pagination between previous and next

Post by iamroming »

hello dear coders i want numbers between prevous and next pls help me my code is below

Code: Select all

$perPage = 10;
 
 
$currentPage = isset($_GET['page']) && is_numeric($_GET['page']) ? (int) $_GET['page'] : 1;
 
 
if (!$result = mysql_query("SELECT id FROM items ORDER BY id DESC")) {
// Change to logging before going live
trigger_error('MYSQL ERROR: ' . mysql_error(), E_USER_ERROR);
exit;
}
$totalItems = mysql_num_rows($result);
 
// The items on the current page.
$offset = ($currentPage - 1) * $perPage;
$firstItem = $offset + 1;
$lastItem = $offset + $perPage < $totalItems ? $offset + $perPage : $totalItems;
 
// Some useful variables for making links.
$firstPage = 1;
$lastPage = ceil($totalItems / $perPage);
$prevPage = $currentPage - 1 > 0 ? $currentPage - 1 : 1;
$nextPage = $currentPage + 1 > $lastPage ? $lastPage : $currentPage + 1;
 
// Get the items for the current page
$sql = "SELECT * FROM items  ORDER BY  id DESC LIMIT $offset, $perPage";
if (!$result = mysql_query($sql)) {
// Change to logging before going live
trigger_error('MYSQL ERROR: ' . mysql_error(), E_USER_ERROR);
exit;
}
$items = array();
while ($row = mysql_fetch_assoc($result)) {
$items[] = $row;
}
foreach ($items as $item): 
//table contents
endforeach:
pbs
Forum Contributor
Posts: 230
Joined: Fri Nov 07, 2008 5:31 am
Location: Nashik, India
Contact:

Re: i want numbers for pagination between previous and next

Post by pbs »

Use this function

Code: Select all

 
<?php
function select_row($sql)
{
    //echo $sql . "<br />";
    if ($sql!="")
    {
        $result = mysql_query($sql) or die("Error: ".mysql_errno().":- ".mysql_error());
        if ($result)
        {
            while($row = mysql_fetch_assoc($result))
                $data[] = $row;
        }
        return $data;
    }
}
 
function pagingSlot($sql, $recperpage, $pagesetlimit, $page, $class, $getvars)
{
    $rescnt=mysql_query($sql);
    $totcnt=mysql_num_rows($rescnt);
   
        if (!$page)   
            $page = 1;
        $first=(($page-1)* $recperpage);
 
        $sql = $sql . " limit ".$first.",".$recperpage;
        $res = select_row($sql);
       
        $serial_no = ($page - 1) * $recperpage;
       
        $t = ($totcnt/$recperpage);
        $arr=split('[.]',$t);
        if ($arr[1])
            $totalpages=$arr[0]+1;
        else
            $totalpages=$arr[0];
   
        if ($totalpages > $pagesetlimit)
        {
            if ($page > 1)
                $pagesetstart = $page - 1;
            else
                $pagesetstart = $page;               
               
            $pagesetend= ($pagesetstart-1) + $pagesetlimit;
            if ($pagesetend > $totalpages)
            {
                $pagesetend = $totalpages;
                $pagesetstart = $pagesetend - $pagesetlimit + 1;
            }
        }
        else
        {
            $pagesetstart = 1;
            $pagesetend = $totalpages;
        }
       
        $str = "";
 
        if ($page > 1)
        {
            $prev = $page - 1;
            $str.= "<a href='".$_SERVER['PHP_SELF']."?page=$prev".$getvars."'  class='".$class."'> << </a>&nbsp;|&nbsp;";                                           
        }
        else
        {
            $str.= "<< &nbsp;|&nbsp;";   
        }
 
 
        for ($i=$pagesetstart; $i<=$pagesetend; $i++)
        {       
   
            if ($i <= $totalpages)
            {
                if (!$page)
                    $page=1;
                if ($page==$i)
                    $str.= '<font color=red>'.$i.'</font>&nbsp;';
                else
                    $str.= "<a href='".$_SERVER['PHP_SELF']."?page=$i".$getvars."'  class='".$class."'>".$i."</a>&nbsp;";
            }                               
        }
 
        if ($page < $totalpages)
        {
            $next = $page + 1;
            $str.= "&nbsp;|&nbsp;<a href='".$_SERVER['PHP_SELF']."?page=$next".$getvars."'  class='".$class."'> >> </a>&nbsp;";                                           
        }
        else
        {
            $str.= "&nbsp;|&nbsp; >> &nbsp;";
        }
 
    if ($totcnt == 0)
        $str = "";
       
    $arr["records"]=$res;
    $arr["link"]=$str;
    $arr["serial"]=$serial_no;
    return $arr;
}        
?>
 
iamroming
Forum Commoner
Posts: 27
Joined: Sun Jan 31, 2010 4:02 am
Location: Hyderabad, India
Contact:

Re: i want numbers for pagination between previous and next

Post by iamroming »

hello sir pbs thanks for your quick response and its very glad to see your location is mumbai
but would mind helping me in how to populate those functions with examples sir
User avatar
pickle
Briney Mod
Posts: 6445
Joined: Mon Jan 19, 2004 6:11 pm
Location: 53.01N x 112.48W
Contact:

Re: i want numbers for pagination between previous and next

Post by pickle »

Basically what you want to do is determine how many items there are total, then divide by the number of items you are showing per page. That gives you the total number of pages. Iterate from 1 to that number to output your numbers.

Do a search both on these forums & Google for "pagination" & you'll get tons of examples.
Real programmers don't comment their code. If it was hard to write, it should be hard to understand.
Post Reply