日期:2014-05-16  浏览次数:20483 次

搜索分页关键字值无法传送
search.php


<?php
include('db_class.php');    
include('inc/function.php'); 

$keyword=trim($_POST['keyword']);
if($keyword==""){
echo "<script>alert('请输入新闻名称!'); history.go(-1);</script>";
exit;//结束程序
}
// 数据库查找代码
$page=isset($_POST['page'])?intval($_POST['page']):1;   
$num=2;  
$total=$db->getcount("select * from  `".$prefix."newsbase` where  id like '%{$keyword}%'  or title like  '%{$keyword}%' ");
//页码计算
$pagenum=ceil($total/$num);     //获得总页数,也是最后一页
$page=min($pagenum,$page);//获得首页
$prepg=$page-1;//上一页
$nextpg=($page==$pagenum ? 0 : $page+1);//下一页
$offset=($page-1)*$num;
$result=$db->query("select * from `".$prefix."newsbase` where sn like '%{$keyword}%'  or title like '%{$keyword}%' or author like '%{$keyword}%' order by news_id desc");
if($row=mysql_num_rows($result)){
while($row=$db->getarray($result)){
?>
<tr>
        <td class="font" valign="top"  width="130"><?php echo $row[id]; ?></td>
        <td class="font" valign="top"  width="130"><?php echo $row[title]; ?></td>
<td class="font" valign="top"  width="130"><?php echo $row[author]; ?></td>
</tr>  
<?php
}
} else{
echo "<script>alert('没有该新闻信息!'); history.go(-1);</script>";
exit;//结束程序
}
?>

<?php 
include 'inc/fy.php'; //分页类
$page=new page(array('total'=>$total,'perpage'=>$num));
echo $page->show(3);
?>


'inc/fy.php' 是网上找的一个PHP分页类(支持四种分页模式),这里我使用的是模式三,现在的问题是搜索正确显示,但是在分页单击下一页的时候老提示“请输入新闻名称”,也就是说关键字没传成功,是在不明白问题在哪里,在论坛上搜索了好久都没有类似的问题,特来请教各位大虾!
------解决方案--------------------
1. 你的page变量不是用get传递吗。
2.$result=$db->query("select * from `".$prefix."newsbase` where sn like '%{$keyword}%'  or title like '%{$keyword}%' or author like '%{$keyword}%' order by news_id desc");  这句没有传递分页条件。
改为:
$result=$db->query("select * from `".$prefix."newsbase` where sn like '%{$keyword}%'  or title like '%{$keyword}%' or author like '%{$keyword}%' order by news_id desc Limit {$offset},{$num}");
------解决方案--------------------
$_POST['keyword'] 只在表单提交时有效,翻页后就没有了

------解决方案--------------------
传递分页里面的关键字的话,最好在表单里面使用GET方式提交。提交之后,表单里面的Action里面的链接带的所有参数将不会自动被提交。必须放到<input/>里面才可以。其次是,遇到中文的问题,必须进行url_encode编码才能进行传递。不然会乱码。http://www.phpcxz.com/a/web/phpweb/2011/0802/113.html