Link to home
Start Free TrialLog in
Avatar of shang3000
shang3000

asked on

how can I make result pagination the same like it appears in google.com

Hi All,
my client want me to make pagination for results the sam as google search results pagination
like that :
pages: Back  1 | 2 | 3 | 4 | 5  Next
.....
page 1 content of search results
.....
does any body can help in that (any samples, examples, links, or tutorials ) are welcomed
Best Regards
HG
Avatar of Itonohito
Itonohito

Can you explain a little - what data are you trying to paginate? You get it from database with SQL request? Or it's read already and you have it in some kind of array? It will help to give more precise suggestions.

Avatar of Alex
i 'll agree with Itonohito because you have to explain as what kind of data you want to paginate.it's database data or something else?
Avatar of shang3000

ASKER

Hi Itonohito,
Hi alex_code,

I meant paginating of data selected from data base
Best regards
HG
hi again shang3000

take this it is working perfect

<?

#######################################################################
#                         VARIABLE LIST                                                                                                #
#      1)      script_page                              //user assigned      (DEFAULT: $PHP_SELF)                        #
#      1)       total_entries                   //user assigned      (DEFAULT: 0)                                                #
#      2)       entries_per_page             //user assigned (DEFAULT: 25)                                                #
#      6)       page_scroll_number      //user assigned      (DEFAULT: 5)                                                #
#      4)       p                                                            //URL value (page number)                                                            #
#      3)       total_pages                         //calculated value                                                                              #
#      4)       page_number                              //calculated value                                                                              #      
#      5)       offset                                          //calculated value                                                                               #
#      7)       record_begin                        //calculated value                                                                              #
#      8)       record_end                              //calculated value                                                                              #
#      9)       page_scroll_begin            //calculated value                                                                              #
#      10)      page_scroll_total            //calculated value                                                                              #
#      11)      i                                                            //counter                                                                                                            #
#######################################################################

//Sample MySQL Query
//$result = mysql_query("SELECT * FROM database LIMIT $offset, $entries_per_page") or die(mysql_error());

## set $script_page ##
$script_page = $PHP_SELF;

## set $total_entries ##
$total_entries = 0;

## set $entries_per_page ##
$entries_per_page = 25;

## set $page_scroll_number ##
$page_scroll_number = 5;

## set $total_pages ##
$total_pages = ceil($total_entries / $entries_per_page);

## set $page_number ##
if(isset($_REQUEST['p']))
{
      if($_REQUEST['p'] > $total_pages)
      {
            $page_number = $total_pages;
      }
      elseif($_REQUEST['p'] < 1)
      {
            $page_number = 1;
      }
      else
      {
            $page_number = floor($_REQUEST['p']);
      }
}
else
{
      $page_number = 1;
}

## set $offset ##
$offset = ($page_number - 1) * $entries_per_page;


#### BEGIN RECORD NUMBERS ####
## set $record_begin, $record_end ##
if($total_entries > 0)
{
      $record_begin = $offset + 1;
}
else
{
      $record_begin = 0;
}

if($total_entries < ($offset + $entries_per_page))
{
      $record_end = $total_entries;
}
else
{
      $record_end = $offset + $entries_per_page;
}
print "Displaying Records: ".$record_begin."-".$record_end." of ".$total_entries."<br />";
#### END RECORD NUMBERS ####


#### BEGIN PAGINATION ####
if($total_pages > 1){
 
      # First, Previous Links #
      if($page_number != 1)
      {
            if($total_pages > $page_scroll_number)
            {      
                  print " <a href=\"".$script_page."?p=1\">First</a> ";
            }
            print " <a href=\"".$script_page."?p=".($page_number - 1)."\">Previous</a> ";
      }
     
      ## set $page_scroll_begin, $page_scroll_total, $i ##
      # Page Number Links #
      if($total_pages >= $page_scroll_number)
      {
            if($page_number > ($page_scroll_number / 2))
            {
                  if(($page_number + ($page_scroll_number / 2)) > $total_pages)
                  {
                        $page_scroll_begin = $total_pages - $page_scroll_number + 1;
                        $page_scroll_total = $page_scroll_begin + $page_scroll_number - 1;
                  }
                  else
                  {
                        $page_scroll_begin = $page_number - (floor($page_scroll_number / 2));
                        $page_scroll_total = ($page_number - (floor($page_scroll_number / 2))) + $page_scroll_number - 1;
                  }
            }
            else
            {
                  $page_scroll_begin = 1;
                  $page_scroll_total = $page_scroll_number;
            }
            for($i = $page_scroll_begin; $i <= $page_scroll_total; $i++)
            {
                  if($i == $page_number)
                  {
                        print $i;
                  }
                  else
                  {  
                        print " <a href=\"".$script_page."?p=".$i."\">".$i."</a> ";
                  }
            }
      }
      else
      {
            for($i = 1; $i <= $total_pages; $i++)
            {
                  if($i == $page_number)
                  {
                        print "$i ";
                  }
                  else
                  {  
                        print " <a href=\"".$script_page."?p=".$i."\">".$i."</a> ";
                  }
            }      
      }
     
      # Next, Last Links #
      if($page_number < $total_pages)
      {
            print " <a href=\"".$script_page."?p=".($page_number + 1)."\">Next</a> ";
            if($total_pages > $page_scroll_number)
            {      
                  print " <a href=\"".$script_page."?p=".$total_pages."\">Last</a> ";
            }
      }
}
#### END PAGINATION ####

it is a perfect solution that zsoder gave to me in an older question that i had asked.
hi alex_code,
thanks very much for your help  :)
but I have problems
when I change the sql statement  to the following
//Sample MySQL Query
$result = mysql_query("SELECT * FROM timesheet  LIMIT $offset, $entries_per_page") or die(mysql_error());
 I get the  following error
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
and when I change it to the following
$result = mysql_query("SELECT * FROM timesheet ") or die(mysql_error());
it display all the records after the paginatiion

would you please help me in that
Best Regards
HG


ASKER CERTIFIED SOLUTION
Avatar of Alex
Alex
Flag of Greece image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Dear alex_code,
thanks alot for your help I owe you one :)
Best Regards
HG
Nothing my friend i am glad to help you.
This is an awesome script Alex.. Cant thank you enough..