We're a community of 1.1M IT Pros here for help, advice, solutions, professional growth and fun. Join us!
1,080,561 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Start New Discussion Reply to this Discussion

Help with pagination page numbers

Hello.

I have made a PHP script that gets news data from a database and i used pagination to split it into page. I have it fully working with page numbers but i would like to know how i would make it only display 10 page numbers at the bottom at any one time. Can anyone help me please. I will post the full code for this.

CODE:

<?php
//Check if in website//
	if (!defined("IN_WEB")) { die("Access Denied"); }

//Includes//
	include('./includes/main.php');

//Get page number from URL//
	if (isset($_GET['page']))
	{
		$page = $_GET['page'];
		$page = mysqli_real_escape_string($myConnection,$page);	
	} else {
		$page = 1;	
	}

//Record count//
	$sqlCommand = "SELECT * FROM news";
	$record_count = mysqli_query($myConnection, $sqlCommand) or die("Error Getting News Count: " . mysqli_error());
	$numrows = mysqli_num_rows($record_count);
	mysqli_free_result($record_count);

//Total Pages//
	$total_pages1 = ($numrows/$per_page);
	$total_pages = round($total_pages1, 0, PHP_ROUND_HALF_UP);

//Check if page number is valid//
	if(($page>$total_pages) && ($page>1))
	{
		$page = 1;
		echo "<META HTTP-EQUIV=\"Refresh\" Content=\"0; URL=" . $phpself . "?page=1\">";    
		exit;
	}

//Set Y as limit value//
	$y = ($page - 1) * $per_page;

//----Build News Block----//

//Get News Block Title//
	$sqlCommand = "SELECT * FROM news_block LIMIT 1";
	$query = mysqli_query($myConnection, $sqlCommand) or die("Error Getting News Block: " . mysqli_error());
	while ($row = mysqli_fetch_array($query)) { 
		$NewsBlockTitle = $row["Block_Title"];
	} 
	mysqli_free_result($query); 

//Echo The Block Title//
	echo "<!-- News Block -->\n";
	echo "<h1>";
	echo $NewsBlockTitle;
	echo "</h1>\n";

//----Get & display News Items----//

//Get News//
	$sqlCommand = "SELECT * FROM news ORDER BY Date DESC LIMIT $y, $per_page"; //$per_page is set in main.php as 10
	$query = mysqli_query($myConnection, $sqlCommand) or die("Error Getting News Items: " . mysqli_error());
	while ($row = mysqli_fetch_array($query)) { 
		$NewsTitle = $row["Title"];
		$NewsID = $row["ID"];
		$NewsAuthID = $row["Author_ID"];

//Get Author Name//
			$sqlCommand1 = "SELECT Name FROM users WHERE ID='$NewsAuthID' LIMIT 1";
			$query1 = mysqli_query($myConnection, $sqlCommand1) or die("Error Getting Author Name: " . mysqli_error());
			while ($row1 = mysqli_fetch_array($query1)) { 
				$NewsAuthorName = $row1["Name"];
			} 
			mysqli_free_result($query1); 
//---------------//
		
		$NewsDate = date("d/m/Y", strtotime($row["Date"]));
		$NewsBody1 = $row["Body"];

//Limit body characters//
		if (strlen($NewsBody1) >= 1000)
		{
			$NewsBody2 .= substr($NewsBody1,0,1000);
			$NewsBody2 .= " ..... <a href=\"news.php?id=" . $NewsID . "\">(Read More)</a>";
		} else {
			$NewsBody2 .= $NewsBody1;	
		}
		
//Get Comment Count//
	$sqlCommand2 = "SELECT News_ID FROM news_comments WHERE News_ID='$NewsID'";
	$query2 = mysqli_query($myConnection, $sqlCommand2) or die("Error Getting Comment Count: " . mysqli_error());
	$CommentsCount = mysqli_num_rows($query2);
	mysqli_free_result($query2); 

//Build News Blocks//	
	$newsBody .= "<div class=\"sub_title\">\n";
	$newsBody .= "<span><a href=\"news.php?id=" . $NewsID . "\">" . $NewsTitle . "</a></span>\n";
	$newsBody .= "<div class=\"divider2\"></div>\n";
	$newsBody .= "<span class=\"span_right\">" . $NewsAuthorName . "</span>\n";
	$newsBody .= "<div class=\"divider2\"></div>\n";
	$newsBody .= "<span class=\"span_right\"> " . $NewsDate ."</span> \n";
	$newsBody .= "<div class=\"divider2\"></div>\n";
	$newsBody .= " <span class=\"span_right\"><a href=\"news.php?id=" . $NewsID . "\">Comments (" . $CommentsCount .")</a></span>\n";
	$newsBody .= "</div>\n";
	$newsBody .= "<div class=\"news_wrapper\">";
	$newsBody .= "<p>";
	$newsBody .= $NewsBody2;
	$newsBody .= "</p>\n";
	$newsBody .= "</div>";
	$newsBody .= "<br />";
} 
mysqli_free_result($query); 

//Echo the news//
	echo $newsBody;
	echo "<br />\n";

//----Page Numbering----//

	if(($numrows - $per_page) < 1)
	{
//If only 1 page of news//
		echo "<center>";
		echo "Page 1 of 1\n";
		echo "<br />";	
		echo "<br />";	
		echo "</center>";	
	} else {
//Build page numbering//
		echo "<center>";
		echo "Page $page of $total_pages\n";
		echo "<br />";
		echo "<table width=\"250\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\">\n";
		echo "<tr>\n";
		echo "<td width=\"125\">\n";
//Build first and previous buttons//
		if ($page != 1)
		{
			echo " <a href='" . $phpself . "?page=1'  >&laquo;&laquo; First </a>  ";	
			$prev = $page - 1;
			echo " <a href='" . $phpself . "?page=" . $prev . "'> &laquo; Previous </a> ";
		}
//Build middle divider//
		if (($page != 1) && ($page != $total_pages))
		{
			echo " |";	
		}
	echo "</td>\n";
	echo "<td width=\"125\">\n";
//Build middle divider//
		if (($page != 1) && ($page != $total_pages))
		{
			echo "| ";	
		}
//Build last and next buttons//
		if ($page != $total_pages)
		{
			$next = $page + 1;
			echo " <a href='" . $phpself . "?page=" . $next . "' > Next &raquo; </a> "; 
			echo " <a href='" . $phpself . "?page=" . $total_pages . "' > Last &raquo;&raquo; </a> ";	
		}
	echo "</td>\n";
	echo "</tr>\n";
	echo "</table>\n";
//Build page numbers//
	$i=1;
		for($i=1;$i<=$total_pages;)
		{
			if($page!=$i)
				echo " | <a href='" . $phpself . "?page=" . $i . "'>" . $i. "</a> | ";		
			else
				echo " | <a href='" . $phpself . "?page=" . $i . "'><b>" . $i. "</b></a> | ";
			$i++;
		}
		
			echo "<br />";
			echo "</center>";
		} // End of "if(($numrows - $per_page) < 1)"//
	echo "<!-- End Of News Block -->\n";
?>

As i say, this code fully works.

Thanks in advance.

3
Contributors
7
Replies
2 Months
Discussion Span
2 Years Ago
Last Updated
8
Views
Monster Killer
Junior Poster in Training
63 posts since Jan 2010
Reputation Points: 10
Solved Threads: 1
Skill Endorsements: 0

on pagination you will find number of tutorials on net. Please try to find a tutorials which meets your requirement. If you do not find any tutorials after making deep search in search engine like google. Please let us know.

sourcebits
Junior Poster
102 posts since Dec 2008
Reputation Points: 16
Solved Threads: 14
Skill Endorsements: 0

on pagination you will find number of tutorials on net. Please try to find a tutorials which meets your requirement. If you do not find any tutorials after making deep search in search engine like google. Please let us know.

The reason I posted here is because I couldn't find anything helpful on the net.

Monster Killer
Junior Poster in Training
63 posts since Jan 2010
Reputation Points: 10
Solved Threads: 1
Skill Endorsements: 0

Nice Logic

$total_pages = round($total_pages1, 0, PHP_ROUND_HALF_UP);

i think it is better to use ceil() instead of round() here

meempat
Newbie Poster
17 posts since Oct 2009
Reputation Points: 10
Solved Threads: 0
Skill Endorsements: 0

Thanks meempat. Does anyone have any ides how to go about the page number limiting ?

Monster Killer
Junior Poster in Training
63 posts since Jan 2010
Reputation Points: 10
Solved Threads: 1
Skill Endorsements: 0

Any one know any way of doing this?

Monster Killer
Junior Poster in Training
63 posts since Jan 2010
Reputation Points: 10
Solved Threads: 1
Skill Endorsements: 0

I hate to have to bump, but its been a while with no reply.

Monster Killer
Junior Poster in Training
63 posts since Jan 2010
Reputation Points: 10
Solved Threads: 1
Skill Endorsements: 0

Hi.

I have updated the code slightly but i still have not found anything on my problem.

Updated code:

<?php
//Check if in website//
	if (!defined("IN_WEB")) { die("Access Denied"); }

//Record count//
	$sqlCommand = "SELECT * FROM news";
	$record_count = mysqli_query(ConnectToMYSQLI(), $sqlCommand) or die("Error Getting News Count: " . mysqli_error());
	$numrows = mysqli_num_rows($record_count);
	mysqli_free_result($record_count);

//Total Pages//
	$total_pages = ceil(($numrows/$per_page));
	
//Get page number from URL//
	if (isset($_GET['page']))
	{
		$page = $_GET['page'];
		$page = mysqli_real_escape_string(ConnectToMYSQLI(),$page);	
		
		//Check if page number is valid//
		if(($page>$total_pages) && ($page>1))
		{
			$page = 1;
			echo "<META HTTP-EQUIV=\"Refresh\" Content=\"0; URL=" . $phpself . "?page=1\">";    
			exit;
		}
			
		if($_GET['page'] <1)
		{
			$page = 1;
			echo "<META HTTP-EQUIV=\"Refresh\" Content=\"0; URL=" . $phpself . "?page=1\">";    
			exit;		
		}
			
		if($_GET['page'] == "")
		{
			$page = 1;
			echo "<META HTTP-EQUIV=\"Refresh\" Content=\"0; URL=" . $phpself . "?page=1\">";    
			exit;	
		}
		
	} else {
		$page = 1;	
	}
	

//Set limit value//
	$limit = ($page - 1) * $per_page; //$per_page is set in main.php as 10

//----Build News Block----//

//Get News Block Info//
	$sqlCommand = "SELECT * FROM news_block LIMIT 1";
	$query = mysqli_query(ConnectToMYSQLI(), $sqlCommand) or die("Error Getting News Block: " . mysqli_error());
	while ($row = mysqli_fetch_array($query)) { 
		$NewsBlockTitle = $row["Block_Title"];
	} 
	mysqli_free_result($query); 

//Echo The Block Title//
	echo "<!-- News Block -->\n";
	echo "<h1>";
	echo $NewsBlockTitle;
	echo "</h1>\n";
	echo "<br />\n";

//----Get & display News Items----//

//Get News//
	$sqlCommand = "SELECT * FROM news ORDER BY Date DESC LIMIT $limit, $per_page"; //$per_page is set in main.php as 10
	$query = mysqli_query(ConnectToMYSQLI(), $sqlCommand) or die("Error Getting News Items: " . mysqli_error());
	while ($row = mysqli_fetch_array($query)) { 
		$NewsTitle = $row["Title"];
		$NewsID = $row["ID"];
		$NewsAuthID = $row["Author_ID"];

//Get Author Name//

$NewsAuthorName = GetAuthorNameFunction($NewsAuthID);

//---------------//
		
		$NewsDate = date("d/m/Y", strtotime($row["Date"]));
		$NewsBody1 = $row["Body"];
		$NewsBody1 = wordwrap($NewsBody1, 110, "\r\n", true);
//Limit body characters//
		if (strlen($NewsBody1) >= 1000)
		{
			$NewsBody2 = substr($NewsBody1,0,1000);
			$NewsBody2 .= " ..... <a href=\"news.php?id=" . $NewsID . "\">(Read More)</a>";
		} else {
			$NewsBody2 = $NewsBody1;
		}
		
//Get Comment Count//
	$sqlCommand2 = "SELECT News_ID FROM news_comments WHERE News_ID='$NewsID'";
	$query2 = mysqli_query(ConnectToMYSQLI(), $sqlCommand2) or die("Error Getting Comment Count: " . mysqli_error());
	$CommentsCount = mysqli_num_rows($query2);
	mysqli_free_result($query2); 

//Build News Blocks//	
	$newsBody .= "<div class=\"sub_title\">\n";
	$newsBody .= "<span><a href=\"news.php?id=" . $NewsID . "\">" . $NewsTitle . "</a></span>\n";
	$newsBody .= "<div class=\"divider2\"></div>\n";
	$newsBody .= "<span class=\"span_right\">" . $NewsAuthorName . "</span>\n";
	$newsBody .= "<div class=\"divider2\"></div>\n";
	$newsBody .= "<span class=\"span_right\"> " . $NewsDate ."</span> \n";
	$newsBody .= "<div class=\"divider2\"></div>\n";
	$newsBody .= " <span class=\"span_right\"><a href=\"news.php?id=" . $NewsID . "#comments\">Comments (" . $CommentsCount .")</a></span>\n";
	$newsBody .= "</div>\n";
	$newsBody .= "<div class=\"news_wrapper\">";
	$newsBody .= "<p>";
	$newsBody .= $NewsBody2;
	$newsBody .= "</p>\n";
	$newsBody .= "</div>";
	$newsBody .= "<br />";
} 
mysqli_free_result($query); 

//Echo the news//
	echo $newsBody;
	echo "<br />\n";

//----Page Numbering----//

	if(($numrows - $per_page) < 1)
	{
//If only 1 page of news//
		echo "<center>";
		echo "Page 1 of 1\n";
		echo "<br />";	
		echo "<br />";	
		echo "</center>";	
	} else {
//Build page numbering//
		echo "<center>";
		echo "Page $page of $total_pages\n";
		echo "<br />";
		echo "<table width=\"250\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\">\n";
		echo "<tr>\n";
		echo "<td width=\"125\">\n";
//Build first and previous buttons//
		if ($page != 1)
		{
			echo " <a href='" . $phpself . "?page=1'  >&laquo;&laquo; First </a>  ";	
			$prev = $page - 1;
			echo " <a href='" . $phpself . "?page=" . $prev . "'> &laquo; Previous </a> ";
		}
//Build middle divider//
		if (($page != 1) && ($page != $total_pages))
		{
			echo " |";	
		}
	echo "</td>\n";
	echo "<td width=\"125\">\n";
//Build middle divider//
		if (($page != 1) && ($page != $total_pages))
		{
			echo "| ";	
		}
//Build last and next buttons//
		if ($page != $total_pages)
		{
			$next = $page + 1;
			echo " <a href='" . $phpself . "?page=" . $next . "' > Next &raquo; </a> "; 
			echo " <a href='" . $phpself . "?page=" . $total_pages . "' > Last &raquo;&raquo; </a> ";	
		}
	echo "</td>\n";
	echo "</tr>\n";
	echo "</table>\n";
//Build page numbers//
	$i=1;
		for($i>=1;$i<=$total_pages;$i++)
		{
				if($page!=$i)
				{
					echo " | <a href='" . $phpself . "?page=" . $i . "'>" . $i. "</a> | ";	
				}
				else
				{
					echo " | <a href='" . $phpself . "?page=" . $i . "'><u><b>" . $i. "</b></u></a> | ";
				}

		}
		
			echo "<br />";
			echo "</center>";
} // End of "if(($numrows - $per_page) < 1)"//
	echo "<!-- End Of News Block -->\n";
?>

If anyone can offer any help i would be very happy as i have been looking for ages.

Thanks.

Monster Killer
Junior Poster in Training
63 posts since Jan 2010
Reputation Points: 10
Solved Threads: 1
Skill Endorsements: 0

This article has been dead for over three months: Start a new discussion instead

Post: Markdown Syntax: Formatting Help
 
You
View similar articles that have also been tagged:
 
© 2013 DaniWeb® LLC
Page generated in 0.1151 seconds using 2.92MB