Page 1 of 1

i want numbers for pagination between previous and next

Posted: Fri Feb 19, 2010 4:52 am
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:

Re: i want numbers for pagination between previous and next

Posted: Fri Feb 19, 2010 5:08 am
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;
}        
?>
 

Re: i want numbers for pagination between previous and next

Posted: Fri Feb 19, 2010 5:59 am
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

Re: i want numbers for pagination between previous and next

Posted: Fri Feb 19, 2010 10:10 am
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.