Hi I've been trying to make pagination for my search results and I have this problem: The first page displays ok but when the max result per page is achieved like $max_results = 2 and it reached 2 the links for the other pages shows but when clicked on it returns nothing and when I go back to page one nothing shows up either can someone help me out? My code is as follow:

<?php 
				
				// Database Connection 
				include 'ccm_chat/database/database.inc'; 
				
				// If current page number, use it 
				// if not, set one! 
				
				if(!isset($_GET['page'])){ 
					$page = 1; 
				} else { 
					$page = $_GET['page']; 
				} 
				
				// Define the number of results per page 
				$max_results = 10; 
				
				// Figure out the limit for the query based 
				// on the current page number. 
				$from = (($page * $max_results) - $max_results); 
				
				// Perform MySQL query on only the current page number's results 
				
				$sql = mysql_query("SELECT * FROM poc_user_data WHERE GENDER LIKE '$gender' AND AGE>='$agemin' AND AGE<='$agemax' AND INTERESTS LIKE '%$interest%' LIMIT $from, $max_results") or die(mysql_error()); 
				
				while($row = mysql_fetch_array($sql)){ 
					// Build your formatted results here. 
				echo    '<p><table width="480"  border="1" cellpadding="0" cellspacing="5" bordercolor="3a8ab6" bgcolor="dee7ed">';
				echo  '<tr>';
				if(!$row['PICTURE_URL']){
				echo    '<td width="200" rowspan="4" align="center" class="profiletext">No Picture Available </td>';
				}else{
				echo    '<td width="200" rowspan="4" align="center" class="profiletext"><img src="'.$row['PICTURE_URL'].'"></td>';
				}
				echo    '<td width="280" class="profiletext">User name: '.$row['USER'].'</td>';
				echo  '</tr>';
				echo  '<tr>';
				echo    '<td class="profiletext">Name: '.$row['NAME'].'</td>';
				echo  '</tr>';
				echo  '<tr>';
				echo    '<td class="profiletext">Age: '.$row['AGE'].'</td>';
				echo  '</tr>';
				echo  '<tr>';
				echo    '<td class="profiletext">Gender: '.$row['GENDER'].'</td>';
				echo  '</tr>';
				echo  '<tr>';
				echo    '<td colspan="2" class="profiletext">Interests: </br>'.$row['INTERESTS'].'</p></td>';
				echo  '</tr>';
				echo  '<tr>';
				echo    '<td colspan="2" class="profiletext">Motto: '.$row['MOTTO'].'</td>';
				echo  '</tr>';
				echo '</table>';
				} 
				
				// Figure out the total number of results in DB: 
				$total_results = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM poc_user_data WHERE GENDER LIKE '$gender' AND AGE>='$agemin' AND AGE<='$agemax' AND INTERESTS LIKE '%$interest%'"),0); 
				
				// Figure out the total number of pages. Always round up using ceil() 
				$total_pages = ceil($total_results / $max_results); 
				
				// Build Page Number Hyperlinks 
				echo '<p class="text"><center>Select a Page<br />'; 
				
				// Build Previous Link 
				if($page > 1){ 
					$prev = ($page - 1); 
					echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$prev\"><<Previous</a> "; 
				} 
				
				for($i = 1; $i <= $total_pages; $i++){ 
					if(($page) == $i){ 
						echo "$i "; 
						} else { 
							echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$i\">$i</a> "; 
					} 
				} 
				
				// Build Next Link 
				if($page < $total_pages){ 
					$next = ($page + 1); 
					echo "<a href=\"".$_SERVER['PHP_SELF']."?page=$next\">Next>></a>"; 
				} 
				echo "</center>"; 
				?>

Hi,

I had done pagination before, and my code has the same structure and i think the problem could be due to the pagination section ie:

instead of :

"// Build Previous Link
if($page > 1){
$prev = ($page - 1);
echo "<a href=\"".$_SERVER."?page=$prev\"><<Previous</a> ";
}
"

you could do this:

"// Build Previous Link
if($page > 1){


$prev = ($page - 1);
$words=$_GET;
$type=$_GET;
$search_type=$_GET;
$max_results=20;
$sort=$_GET;


echo "<a href=search_pagin.php?page=$prev&Query=$words&SearchView=$type&$max_results&Sort=$sort&SearchType=$search_type> previous  < </a>&nbsp;&nbsp;";
} "

do note :$words,$type, etc are only variables(which i extract the code from my own program of course), these variables are passsed on to the next page or link

instead of :

"for($i = 1; $i <= $total_pages; $i++){
if(($page) == $i){
echo "$i ";
} else {
echo "<a href=\"".$_SERVER."?page=$i\">$i</a> ";
}
}
"

you could do this:

"for($i = 1; $i <= $total_pages; $i++){
if(($page) == $i){
echo "$i&nbsp;";
} else {
$words=$_GET;
$type=$_GET;
$search_type=$_GET;
$max_results=20;
$sort=$_GET;


echo "<a href=search_pagin.php?page=$i&Query=$words&SearchView=$type&$max_results&Sort=$sort&SearchType=$search_type>$i</a>&nbsp;&nbsp;";
}
} "

and instead of :

"// Build Next Link
if($page < $total_pages){
$next = ($page + 1);
echo "<a href=\"".$_SERVER."?page=$next\">Next>></a>";
}
echo "</center>";
?> "

you could do this:

"// Build Next Link
if($page < $total_pages){
$next = ($page + 1);
$words=$_GET;
$type=$_GET;
$search_type=$_GET;
$max_results=20;
$sort=$_GET;


echo "<a href=search_pagin.php?page=$next&Query=$words&SearchView=$type&$max_results&Sort=$sort&SearchType=$search_type> >  next20 </a>";
} "

it sounds lengthy, but i hope it helps!!

Edited 3 Years Ago by happygeek: fixed formatting

excuse me. but is there other simpler codes in search and pagination?
i'm just a novice web developer.. thank you:)

This article has been dead for over six months. Start a new discussion instead.