• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 259
  • Last Modified:

Can anyone provide advice with my pagination php code?

Hey guys, I am creating a way to display products on a page with page numbering, I am aiming that each page will contain the next amount of products. For testing purposes, I have 14 products in my table and I have set the items per page to 1 so that generates 14 pages, but when I click on a different page it just always displays the same product. Here is my code:

if($main == go){

			if (isset($_GET["page"])) { 
			$page  = $_GET["page"]; 
			else { 
			$_GET["page"] = 1; 
			$start_from = ($page-1) * $pageitems; 
			$pageitems = 1;
							//SQL to calculate amount of pages need for product listing
				$sql2 = "SELECT COUNT(productID) AS 'rowcount' FROM products";
				$stmt2 = sqlsrv_query( $conn, $sql2,array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
					die( print_r( sqlsrv_errors(), true));
				}	while( $row2 = sqlsrv_fetch_array( $stmt2)){$total_records = $row2['rowcount'];}

				$total_pages = ceil($total_records / $pageitems);

			$sql = "SELECT productID, productName, category, range, price, picture, description, ROW_NUMBER() OVER(ORDER BY category) AS rownumber FROM products "; 

			//Check SQL Query		
			$stmt = sqlsrv_query( $conn, $sql,array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
				die( print_r( sqlsrv_errors(), true));

				while( $row = sqlsrv_fetch_array( $stmt)) 
								$rownumber = $row['rownumber'];
								$end_at = $pageitems + $start_from;
								if (($rownumber>$start_from)&&($rownumber<=$end_at))
								echo '<p class="productsContent">'.$row['productName'];
								echo '<br/>'.$row['category'];
								echo '<br/>'.$row['range'];
								echo '<br/>&pound;'.$row['price'];
								echo '<br/><br/><a href="products.php?productID='.$row['productID'].'"><img  src="' . $row['picture'] .'" /></a>';
								echo '<br/><br/></p>';

						for ($i=1; $i<=$total_pages; $i++) { 
						echo "<a href='products.php?main=go&page=".$i."'>".$i."</a> "; 

Open in new window

I have almost finished this, but just cant figure out the last part, I feel this would have been easier using the LIMIT function, but this is not supported in SQL Server.

If anyone can help out that would be great.

1 Solution
Ray PaseurCommented:
The canonical article about pagination is from SitePoint.  Although it is almost five years old it remains one of the most clearly written examples.  Comes complete with a class you can install and extend!

HTH, ~Ray

Featured Post

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now