Hello All,
I am looking for someone willing to rip the code apart and tell me any improvements that could be done to either of the below code blocks.
I am looking to lessen the code needed for it job, under the switch() case 1 is where I believe the code could be improved the most.
I am also looking for advice on making the form for this function safer.
Any ideas or feed back is welcomed!!
This function is being used through out the website for area that have a search box.
This is the page_nav_bar() function:
<?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($total_records > $records_per_page)
{
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;
}
}
$numberpage = 0;
for($i = 0; $i < $number_shown_page_links; $i++)
{
if($start_page + $i >= $last_page)
{
break;
}
$number_page = $i;
}
$finish_page = $start_page + $number_page + 1;
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);
}
?>
this is results_stat_bar() function:
<?php
function results_stat_bar($searchquery, $totalrecords, $offset, $recordcount)
{
$dsn = $offset + 1;
$den = $offset + $recordcount;
$process_time = '0.01 Sec';
if($totalrecords > 0)
{
$drs = "Now displaying results $dsn to $den";
}
else
{
$drs = "";
}
$page_stat_bar = "Your search for $searchquery found $totalrecords results. $drs Seek Time: $process_time<br /><br />";
return ($page_stat_bar);
}
?>
Is there any other changes I can do to make this better and more friendly?
Sincerely,
Christopher