Jump to content

Pagination Help Please


andrew_biggart

Recommended Posts

Ok so at the minute I have designed a working forum. I am now trying to implement pagination into the threads.

 

At the minute this is the working code before pagination.

 

		<br />
	<table cellpadding="0" cellspacing="0" class="acc_status_table">
		<tr>
			<td class="forum_lt">Latest Thread&#39;s</td>
		</tr>
		<tr>
			<td class="acc_status_feed">
			<?php

			include("config.php");	

			// Retrieve data from database 
			$sql="SELECT * FROM biggartfp9_forum_threadst ORDER BY Post_id DESC LIMIT 15 " ;
			$result=mysql_query($sql);

			// Start looping rows in mysql database.
			while($rows=mysql_fetch_array($result)){

			?>
			<table class="acc_status_statuses">
				<tr>
					<td class="acc_status_img" rowspan="2" valign="top"><a href="profile.php?username=<?php echo $rows['Post_username']; ?>"><?php echo "<img class='profile_pic' src='../Profile_thumbs/". $rows['Post_pp'] . "' style='width:50px; height:50px;' />";?></a></td>
					<td class="acc_alerts_posted">
					In 
					<a  class="forum_cat" href="forum_filter.php?id=<? echo $rows['Post_type']; ?>"><?php echo $rows['Post_type']; ?></a> , by <a  class="forum_cat" href="profile.php?username=<? echo $rows['Post_username']; ?>"><?php echo $rows['Post_username']; ?></a> on <?php echo $rows['Post_date']; ?>
					</td>
				</tr>
				<tr>
					<td class="acc_alerts_comment" valign="top">
					<a class="forum_subject_link" href="forum_view.php?Post_id=<? echo $rows['Post_id']; ?>"><?php echo $rows['Post_subject']; ?></a>
					</td>
				</tr>
			</table>
			<br />
			<?php
			// close while loop 
			}
			// close connection 
			mysql_close();
			?>
			</td>
		</tr>
	</table>

 

And this is the pagination code i am trying to use.

 

		<br />
	<table cellpadding="0" cellspacing="0" class="acc_status_table">
		<tr>
			<td class="forum_lt">Latest Thread&#39;s</td>
		</tr>
		<tr>
			<td class="acc_status_feed">
			<?php
				/*
					Place code to connect to your DB here.
				*/
				include('config.php');	// include your code to connect to DB.

				$tbl_name="biggartfp9_forum_threadst";		//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 = "forum_pagetest.php"; 	//your file name  (the name of this file)
				$limit = 5; 								//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 * FROM $tbl_name 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($row = mysql_fetch_array($result))
					{
				// close while loop 
					}
				?>		
			<?=$pagination?>
			</td>
		</tr>
	</table>

 

I am having trouble adding my old while loop intot he new pagination code, i know i have to add the table i want to echo, but then what syntax do i use to echo the rows of data?

Link to comment
https://forums.phpfreaks.com/topic/192445-pagination-help-please/
Share on other sites

Should this work?

 

I thought this is the right way to do it but i am receiving no output from the database.

 

		<br />
	<table cellpadding="0" cellspacing="0" class="acc_status_table">
		<tr>
			<td class="forum_h">Thread Filter</td>
		</tr>
		<tr>
			<td class="acc_status_feed">
				<table>
					<tr>
						<td><a class="forum_filter" href="forum_filter.php?id=ILoveArt">ILoveArt</a></td>
						<td><a class="forum_filter" href="forum_filter.php?id=Artists">Artists</a></td>
						<td><a class="forum_filter" href="forum_filter.php?id=Artwork">Artwork</a></td>
						<td><a class="forum_filter" href="forum_filter.php?id=Galleries">Galleries</a></td>
						<td><a class="forum_filter" href="forum_filter.php?id=Contests">Contests</a></td>
						<td><a class="forum_filter" href="forum_filter.php?id=Love | Hate">Love | Hate</a></td>
						<td><a class="forum_filter" href="forum_filter.php?id=Rant | Moan">Rant | Moan</a></td>
						<td><a class="forum_filter" href="forum_filter.php?id=Whatever">Whatever</a></td>
						<td><a class="forum_filter" href="forum_filter.php?id=Problem">Problem</a></td>
					</tr>
				</table>
			</td>
		</tr>
	</table>
	<br />
	<table cellpadding="0" cellspacing="0" class="acc_status_table">
		<tr>
			<td class="forum_lt">Latest Thread&#39;s</td>
		</tr>
		<tr>
			<td class="acc_status_feed">
			<?php
				/*
					Place code to connect to your DB here.
				*/
				include('config.php');	// include your code to connect to DB.

				$tbl_name="biggartfp9_forum_threadst";		//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 = "forum_pagetest.php"; 	//your file name  (the name of this file)
				$limit = 5; 								//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 * FROM $tbl_name 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($row = mysql_fetch_array($result))
					{
				?>
				<table class="acc_status_statuses">
					<tr>
						<td class="acc_status_img" rowspan="2" valign="top"><a href="profile.php?username=<?php echo $rows['Post_username']; ?>"><?php echo "<img class='profile_pic' src='../Profile_thumbs/". $rows['Post_pp'] . "' style='width:50px; height:50px;' />";?></a></td>
						<td class="acc_alerts_posted">
						In 
						<a  class="forum_cat" href="forum_filter.php?id=<? echo $rows['Post_type']; ?>"><?php echo $rows['Post_type']; ?></a> , by <a  class="forum_cat" href="profile.php?username=<? echo $rows['Post_username']; ?>"><?php echo $rows['Post_username']; ?></a> on <?php echo $rows['Post_date']; ?>
						</td>
					</tr>
					<tr>
						<td class="acc_alerts_comment" valign="top">
						<a class="forum_subject_link" href="forum_view.php?Post_id=<? echo $rows['Post_id']; ?>"><?php echo $rows['Post_subject']; ?></a>
						</td>
					</tr>
				</table>
				<br />					
				<?
				// close while loop 
				}

				// close connection 
				mysql_close();
				?>
			<?=$pagination?>
			</td>
		</tr>
	</table>

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.