Question

my default load page is ok with next and prev results.. but for search results i can get only first page then blank for the next page. let say total search results row is 9, it display 3 pages with next link. but when i click the next link, it queries no result on the page 2. here is my code:

echo '<table><tr><td>';
echo '<form method="post" name="frmSearch" action="mypage.php>
Search by name 
<input type="text" name="txtSearch">
<input type="submit" name="submit" value="Search">
</form>';

$per_page = 5; 
$page = 1;

if (isset($_GET['page'])) 
{
$page = intval($_GET['page']); 
if($page < 1) $page = 1;
}

$start_from = ($page - 1) * $per_page; 
$Prev_Page = $page - 1;
$Next_Page = $page + 1;

if (!$_POST){
//$sql = "SELECT * FROM mytable LIMIT $start_from, $per_page";
//$totalr = mysql_query("SELECT COUNT(*) FROM mytable");
//$totalr = mysql_fetch_row($totalr);
//$totalr = $totalr[0];
//$total_pages = $totalr / $per_page;
//$total_pages = ceil($total_pages);

//$listresult = mysql_query($sql);
//$total = mysql_num_rows($listresult);
} 
else {
     if ($_POST['txtSearch']!="") {$cond1 = " name LIKE      
'%".$_POST['txtSearch']."%' ";} else {$cond1 = 1; }

$sql = "SELECT * FROM mytable WHERE ".$cond1." LIMIT $start_from, $per_page";

$totalr = mysql_query("SELECT COUNT(*) FROM mytable WHERE name LIKE   
'%".$_POST['txtSearch']."%' ");
$totalr = mysql_fetch_row($totalr);
$totalr = $totalr[0];

$total_pages = $totalr / $per_page;
$total_pages = ceil($total_pages); 

$listresult = mysql_query($sql);
$total = mysql_num_rows($listresult);
}

if($total == 0){
echo "<center>No records found.</center>";
}

echo "<span style='float:right;margin-top:8px;'>[ <a href='new.php'>Add New</a>    
]</span></td></tr>";
echo "<table>

<tr>
<th>ID</th>
<th>Name</th>
</tr>
";

while ($_POST = mysql_fetch_assoc($listresult)){ 

echo "<tr>";
echo "<td>" . $_POST['id'] . "</td>";
echo "<td>" . $_POST['name'] . "</td>";
echo "</tr>";
}

echo "</table>";
echo "</table>";

echo $totalr." result";
echo "<br>";

if ($Prev_Page) {

echo " <a href ='{$_SERVER['PHP_SELF']}?page=$Prev_Page'><< Prev</a> ";
}

if ($totalr > $per_page) {
for($i = 1; $i  <= $total_pages; ++$i)
{
echo "<a href='{$_SERVER['PHP_SELF']}?page=$i'>$i</a> &nbsp;| &nbsp;";
}
}

if ($page!=$total_pages) {
echo " <a href='{$_SERVER['PHP_SELF']}?page=$Next_Page'>Next >></a> ";        
}
Was it helpful?

Solution

maybe you need to use SELECT COUNT(*) FROM mytable WHERE name LIKE '%$search%' ... remember to escape the $_POST['txtSearch']

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top