Maison >développement back-end >tutoriel php >搜索分页关键字值无法传送
search.php
<?phpinclude('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);?>
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}");
已经page改成get传递,同时增加传递分页条件,可以实现了搜索后按照$num的值来显示每页的条数,但是在单击下一页的时候还是进不了下一页,提示“请输入新闻名称”
那你的url可能有问题。。你分页类中有url吗?上一页,下一页,。。。都需要有url的。
我觉得应该没有问题,因为在做新闻列表的时候这个分页类是成功的,但是在做这次的搜查列表的时候分页就出现问题了,查了好久,也没发现问题,
http://www.chinahtml.com/0702/php-117150834711176.html
这个就是我参考的分页类,我使用的是model(3),
琢磨了两天了,一点头绪都没有,所以麻烦各位大虾帮忙分析分析!
今天再次测试将下面这段搜索代码删除后,点击搜索出来的是数据库中全部的数据,分页也能正常显示,但是加上下面这段代码后,单击下一页时老提示“请输入新闻名称”,造成错误的应该不是URL!搞不懂!?
$keyword=trim($_POST['keyword']);if($keyword==""){echo "<script>alert('请输入新闻名称!'); history.go(-1);</script>";exit;//结束程序}
$_POST['keyword'] 只在表单提交时有效,翻页后就没有了
传递分页里面的关键字的话,最好在表单里面使用GET方式提交。提交之后,表单里面的Action里面的链接带的所有参数将不会自动被提交。必须放到里面才可以。其次是,遇到中文的问题,必须进行url_encode编码才能进行传递。不然会乱码。 http://www.phpcxz.com/a/web/phpweb/2011/0802/113.html
按照大家提出的质疑解决了问题,非常感谢各位朋友!
可以在翻页的地方加上 .php?keyword=$keyword传递keyword参数
然后在页面上加上$keyword=isset($_POST['keword'])?'':(isset($_GET['keyword'])?$_GET['keyword']:'').
是的,已经解决,当解决问题后回过头来发现这个问题真的很简单,惭愧,基础有待加强,呵呵!
LZ,我也遇到你这种情况,搜索结果的第一页正常,显示下一页就丢失搜索结果的关键字了,我的是个信息管理系统,默认情况显示数据库所有记录,输入关键字搜索后,可正常显示第一页,但一翻页就会显示数据库所有记录,能把你搜索结果的分页代码贴出来,让我学习一下吗?
请问 楼主 我也出现 与你一样的问题 请问怎么解决呀??