【问题标题】:php next page blank for search resultphp下一页空白搜索结果
【发布时间】:2014-05-07 16:48:43
【问题描述】:

我的默认加载页面可以显示下一页和上一页结果。但对于搜索结果,我只能获得第一页,然后下一页空白。假设总搜索结果行是 9,它显示 3 页和下一个链接。但是当我单击下一个链接时,它在第 2 页上没有查询任何结果。这是我的代码:

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> ";        
}

【问题讨论】:

    标签: php search pagination


    【解决方案1】:

    也许你需要使用 SELECT COUNT(*) FROM mytable WHERE name LIKE '%$search%' ...记得转义 $_POST['txtSearch']

    【讨论】:

    • 我尝试使用 '%$search%' ...相同的结果.. 第一页加载正确的结果与接下来的 3 页.. 但是当我点击下一步时,它显示空白结果..
    • 当您单击下一步时,您可能没有保留 $_POST['txtSearch'] 值。您可能想使用 url 并使用 $_GET... 或者在单击下一个链接时再次触发表单。或者另一种解决方案是使用搜索值设置 php 会话。我建议使用 $_GET 因为您可以共享具有确切页面结果的链接:)
    • 你的意思是像这样通过 url 传递值? action="mypage.php?&search=$_GET['txtSearch']" 或者您介意编写示例代码吗?
    • 谢谢 medda86.. 解决了.. 这就是我所做的:Next >>一个>
    • 不客气,干得好 :) .. 记得在所有用户数据上使用 mysql_real_escape_string
    猜你喜欢
    • 2019-05-21
    • 1970-01-01
    • 2016-05-29
    • 2017-08-29
    • 2019-10-03
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多