Jump to content

Pagination errors?


andrew_biggart

Recommended Posts

Ok im using pahination for one of the sections of my site and ive got it working 90% properly but the probem i have is it is creating creating to many pages, im using the following code can anyone see why?

 

<?php
/*
	Place code to connect to your DB here.
*/
include('config.php');	// include your code to connect to DB.

$post_id=$_GET['Post_id'];
$tbl_name="User_commentsT";		//your table name
// How many adjacent pages should be shown on each side?
$adjacents = 3;

/* 
   First get total number of rows in data table. 
   If you have a WHERE clause in your query, make sure you mirror it here.
*/
$query = "SELECT COUNT(*) as num FROM $tbl_name";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num];

/* Setup vars for query. */
$targetpage = "view_topic.php?Post_id=$post_id"; 	//your file name  (the name of this file)
$limit = 10; 								//how many items to show per page
$page = $_GET['page'];
if($page) 
	$start = ($page - 1) * $limit; 			//first item to display on this page
else
	$start = 0;								//if no page var is given, set start to 0

/* Get data. */
$sql = "SELECT Comment_username, Comment_comment, Comment_date FROM $tbl_name WHERE Post_id='$post_id' ORDER BY Post_id ASC LIMIT $start, $limit";
$result = mysql_query($sql);

/* Setup page vars for display. */
if ($page == 0) $page = 1;					//if no page var is given, default to 1.
$prev = $page - 1;							//previous page is page - 1
$next = $page + 1;							//next page is page + 1
$lastpage = ceil($total_pages/$limit);		//lastpage is = total pages / items per page, rounded up.
$lpm1 = $lastpage - 1;						//last page minus 1

/* 
	Now we apply our rules and draw the pagination object. 
	We're actually saving the code to a variable in case we want to draw it more than once.
*/
$pagination = "";
if($lastpage > 1)
{	
	$pagination .= "<div class=\"pagination\">";
	//previous button
	if ($page > 1) 
		$pagination.= "<a href=\"$targetpage&page=$prev\">« Previous</a>";
	else
		$pagination.= "<span class=\"disabled\">« Previous</span>";	

	//pages	
	if ($lastpage < 7 + ($adjacents * 2))	//not enough pages to bother breaking it up
	{	
		for ($counter = 1; $counter <= $lastpage; $counter++)
		{
			if ($counter == $page)
				$pagination.= "<span class=\"current\">$counter</span>";
			else
				$pagination.= "<a href=\"$targetpage&page=$counter\">$counter</a>";					
		}
	}
	elseif($lastpage > 5 + ($adjacents * 2))	//enough pages to hide some
	{
		//close to beginning; only hide later pages
		if($page < 1 + ($adjacents * 2))		
		{
			for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
			{
				if ($counter == $page)
					$pagination.= "<span class=\"current\">$counter</span>";
				else
					$pagination.= "<a href=\"$targetpage&page=$counter\">$counter</a>";					
			}
			$pagination.= "...";
			$pagination.= "<a href=\"$targetpage&page=$lpm1\">$lpm1</a>";
			$pagination.= "<a href=\"$targetpage&page=$lastpage\">$lastpage</a>";		
		}
		//in middle; hide some front and some back
		elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
		{
			$pagination.= "<a href=\"$targetpage&page=1\">1</a>";
			$pagination.= "<a href=\"$targetpage&page=2\">2</a>";
			$pagination.= "...";
			for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
			{
				if ($counter == $page)
					$pagination.= "<span class=\"current\">$counter</span>";
				else
					$pagination.= "<a href=\"$targetpage&page=$counter\">$counter</a>";					
			}
			$pagination.= "...";
			$pagination.= "<a href=\"$targetpage&page=$lpm1\">$lpm1</a>";
			$pagination.= "<a href=\"$targetpage&page=$lastpage\">$lastpage</a>";		
		}
		//close to end; only hide early pages
		else
		{
			$pagination.= "<a href=\"$targetpage&page=1\">1</a>";
			$pagination.= "<a href=\"$targetpage&page=2\">2</a>";
			$pagination.= "...";
			for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
			{
				if ($counter == $page)
					$pagination.= "<span class=\"current\">$counter</span>";
				else
					$pagination.= "<a href=\"$targetpage&page=$counter\">$counter</a>";					
			}
		}
	}

	//next button
	if ($page < $counter - 1) 
		$pagination.= "<a href=\"$targetpage&page=$next\">Next »</a>";
	else
		$pagination.= "<span class=\"disabled\">Next »</span>";
	$pagination.= "</div>\n";		
}
?>


<?php
	while($rows = mysql_fetch_array($result))
	{
?>
<table style="width: 350px" cellspacing="0" cellpadding="0" align="center">
<tr><td>
<table class="replies_table">
<tr><td class="repliesh">Posted by <a class="replies1" href="profile.php?username=<? echo $rows['Comment_username']; ?>"><? echo $rows['Comment_username']; ?></a> posted on <? echo $rows['Comment_date']; ?></td></tr>
<tr><td class="replies"><? echo $rows['Comment_comment']; ?></td></tr>
</table>
</td><td class="viewspace"></td></tr>
</table>
<br />
<?php

	}
?>
<br />
<div id="pagination">
<?=$pagination?>
</div>

Link to comment
https://forums.phpfreaks.com/topic/147828-pagination-errors/
Share on other sites

i do want to limit it in any way because its to show the comments that the users have made on a post so i want them all to be show for the post_id.

 

Its happening on a few pages so i can seem to work out what i am doing wrong at all grrrrr

Link to comment
https://forums.phpfreaks.com/topic/147828-pagination-errors/#findComment-775920
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.