Hello all,
I have found a bug in the below code, if you select case 1 for the type of page_nav_bar when you click on the 2nd to last page link it will make the last page link disappear.
you have 32 pages
you are currently showing on the screen First | Prev 28 29 30 31 32 Next | Last
now when you click on 31 it then shows First | Prev 27 28 29 30 31 Next | Last
it should show it as the following First | Prev 28 29 30 31 32 Next | Last
Now if I click on next or last it shows First | Prev 28 28 29 30 31
it should show it as the following First | Prev 28 29 30 31 32
if you could please help with this I would be very thrilled and thankful!
Sincerely,
Christopher
<?php
// $searchquery = "test"; // var from url
// $totalrecords = 172; // total rows found from the search
// $pagenumber = $_GET['pn']; // page number that is being displayed
function page_nav_bar($search_query, $total_records, $record_count, $type = '', $page_number = '1', $number_shown_page_links = '5', $records_per_page = '20')
{
$first_page = 1; // first page
$last_page = ceil($total_records/$records_per_page); // last page
$page_nav_bar = ''; // var thats used to hold what will be displayed for the page nav bar
if($page_number > $first_page)
{
$page_nav_bar .= "<a href=\"http://" . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'] ."?sq=$search_query&pn=$first_page\">First</a> ";
$page_nav_bar .= ' | ';
$prev_page = $page_number - 1;
$page_nav_bar .= "<a href=\"http://" . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'] ."?sq=$search_query&pn=$prev_page\">Prev</a> ";
}
switch($type)
{
default:
$page_nav_bar .= " Page $page_number of $last_page ";
break;
case 1:
if($page_number > $last_page)
{
$page_number = $last_page;
}
$page_offset = ($number_shown_page_links - 1)/2;
if(($page_number - $page_offset > 1)&&($page_number + $page_offset <= $last_page))
{
$start_page = $page_number - $page_offset;
}
else if($page_number - $page_offset <= 1)
{
$start_page = 1;
}
else if($page_number + $page_offset > $last_page)
{
$start_page = $last_page - $number_shown_page_links;
}
if($start_page < 1)
{
$start_page=1;
}
for($i = 0; $i < $number_shown_page_links; $i++)
{
$number_page = $i;
if($start_page + $i >= $last_page)
{
break;
}
}
$finish_page = $start_page + $number_page;
for($i = $start_page; $i <= $finish_page; $i++)
{
if($page_number == $i)
{
$page_nav_bar .= " $i ";
}
else
{
$page_nav_bar .= " <a href=\"http://" . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'] ."?sq=$search_query&pn=$i\">$i</a> ";
}
}
break;
}
if($page_number < $last_page)
{
$next_page = $page_number + 1;
$page_nav_bar .= "<a href=\"http://" . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'] ."?sq=$search_query&pn=$next_page\">Next</a>";
$page_nav_bar .= ' | ';
$page_nav_bar .= "<a href=\"http://" . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'] ."?sq=$search_query&pn=$last_page\">Last</a>";
}
$page_nav_bar .="
<form name=\"goto_page\" action=\"". $_SERVER['PHP_SELF']."\" method=\"GET\">
<input type=\"hidden\" name=\"sq\" value=\"$search_query\" />
Goto page: <input type=\"text\" name=\"pn\" size=\"1\" maxlength=\"2\" />
<input type=\"submit\" name=\"go\" value=\"Go\" />
</form>";
return ($page_nav_bar);
}
?>