Jump to content

Pagination - back button problems?


dunc@sf

Recommended Posts

Morning, ladies and gents.

 

First post here - got a bit of a problem with my website.

 

I'm using a pagination function on my website to give page numbers for search results (it's a fishkeeping website with numerous profiles so a bit of a necessity).

 

The basics are that $act, $page and $limit variables are sent through URLs and any additional search preferences (region, category or whatever) are stored in session variables if it's a fresh search (if $f==fresh, <input type=hidden name=f> on the search form), or retrieved from session variables if it isn't.

 

When the results are displayed, as expected the results link to either a separate fish profile page or in the case of our community database it'll link to community.php?id=int and display the individual details of a club or affiliate.

 

My problem is that after viewing a club or fish profile, if the user hits back, I get the classic "page cannot be displayed".

 

Most of the code is here:

if ($num_rows > 0)
{
echo '<table class="kbTable" align="left" width="604">
<p><h2>'.$title.'s</h2></p>';

//-----> Start page maths
$pages = intval($num_rows/$limit); // Number of results pages.

// $pages now contains int of pages, unless there is a remainder from division.

if ($num_rows % $limit)
	$pages++;// has remainder so add one page

$current = ($page/$limit) + 1; // Current page number.

if (($pages < 1) || ($pages == 0))
	$total = 1;// If $pages is less than one or equal to 0, total pages is 1.
else
	$total = $pages;// Else total pages is $pages value.

$first = $page + 1; // The first result.

if (!((($page + $limit) / $limit) >= $pages) && $pages != 1)
	$last = $page + $limit;//If not last results page, last result equals $page plus $limit.

else
	$last = $num_rows;// If last results page, last result equals total number of results.
//-----> Finish page maths

echo '<tr>
<td align="left" class="bluTxt10px" colspan="2">
Page <b>'.$current.'</b> of <b>'.$total.'</b>. Results <b>'.$first.'</b> - <b>'.$last.'</b> of <b>'.$num_rows.'</b>
</td>
<td align="right" class="bluTxt10px">Results per page: ';
if ($limit == 6) { echo '6 |'; }
else { echo '<a href="'.$PHP_SELF.'?act=$act&page='.$page.'&limit=6" class="bluTxt10px">6</a> |'; }
if ($limit == 15) { echo ' 15 |'; }
else { echo ' <a href="'.$PHP_SELF.'?act=$act&page='.$page.'&limit=15" class="bluTxt10px">15</a> |'; } 
if ($limit == 30) { echo ' 30 |'; }
else { echo ' <a href="'.$PHP_SELF.'?act=$act&page='.$page.'&limit=30" class="bluTxt10px">30</a> |'; } 
if ($limit == 60) { echo ' 60'; }
else { echo ' <a href="'.$PHP_SELF.'?act=$act&page='.$page.'&limit=60" class="bluTxt10px">60</a>'; } 
echo '</td>
</tr>';

$sql .= " ORDER BY name ASC LIMIT $page, $limit";

$result = mysql_query($sql);
while($row = mysql_fetch_array($result))   
{ 
	$items[] = array(1 => $row['name'], 2 => $row['owner'], 3 => $row['id']);   
}

// Default # of Columns   
$numcols = 3;   
  
// Number of Items   
$numitems = count($items);   
  
// Number of Rows   
$numrows = ceil($numitems/$numcols); 

for ($row=1; $row <= $numrows; $row++)   
{
	$cell = 0;   
	echo ' <tr>'."\n";   
	for ($col=1; $col <= $numcols; $col++)   
	{   
		echo '  <td width="'.round(100/$numcols).'%" class="resTD">'."\n";   
  
		if ($col===1)   
		{   
			$cell += $row;   
			print '<span class="clubName">
			<a href="community.php?id='.$items[$cell - 1][3].'">'.$items[$cell - 1][1].'</a>
			</span>
			<br />';
			print $items[$cell - 1][2];
		}   
		else
		{   
			$cell += $numrows; 
			print '<span class="clubName">
			<a href="community.php?id='.$items[$cell - 1][3].'">'.$items[$cell - 1][1].'</a>
			</span>
			<br />';
			print $items[$cell - 1][2];
		}   
		echo '  </td>'."\n";   
	}   
	echo ' </tr>'."\n";   
}
//-----> Next page processing
if ($num_rows > $limit)
{
	echo '<tr><td colspan="3" align="center" class="bluTxt10px">';
	if ($page != 0)
	{ // Don't show back link if current page is first page.
		$back_page = $page - $limit;
		echo("<a href=\"$PHP_SELF?act=$act&page=$back_page&limit=$limit\" class=\"bluTxt10px\"><< </a>\n");
	}
	if (!((($page+$limit) / $limit) >= $pages) && $pages != 1)
	{ // If last page, don't give next link.
		$next_page = $page + $limit;
		echo("<a href=\"$PHP_SELF?act=$act&page=$next_page&limit=$limit\" class=\"bluTxt10px\"> >></a>\n");																			
	}
	echo '<br>';
	for ($i=1; $i <= $pages; $i++) // loop through each page and give link to it.
	{
		$ppage = $limit*($i - 1);																			
		if ($ppage == $page){
		echo("<b>$i</b> \n");} // If current page don't give link, just text.
		else{
		echo("<a href=\"$PHP_SELF?act=$act&page=$ppage&limit=$limit\" class=\"bluTxt10px\">$i</a> \n");}
	}
	echo '</td></tr>';

 

Any ideas?

 

Thanks in advance!

Link to comment
https://forums.phpfreaks.com/topic/73286-pagination-back-button-problems/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.