Click to See Complete Forum and Search --> : function page_bar() looking for feed back!


spiritssight
02-16-2008, 08:04 PM
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

spiritssight
02-17-2008, 11:10 PM
I have made some big changes to the page_nav_bar() in the prev post.

Thanks for any advice!
Christopher