php 搜索结果分页问题

比如搜索到的结果显示是3条数据没错的,总数也是3条,但点下一页总数就变成了6(数据库的总共条数了),这个怎么解决啊第一次是传值过去了,点下一页就变成了数据库总数了我用的是... 比如 搜索到的结果显示是3条数据没错的,总数也是3条,但点下一页总数就变成了6(数据库的总共条数了),这个怎么解决啊
第一次是传值过去了,点下一页就变成了数据库总数了 我用的是thinkphp自己写的分页
class Tage{
public $total;//每页显示多少条
public $numpage;//一共有多少个分页
public $count;//数据库总数
protected $config=array('header'=>'条记录','up'=>'上一页','next'=>'下一页','first'=>'首页','last'=>'尾页');
public $page;
public $pageboth=2;//两边的数量

public function __construct($count,$total){

$this->count=$count;//数据库总数
$this->total=$total;//每页显示多少条
$this->numpage=ceil($this->count/$this->total);
$this->page=$this->getpage();//获取page各种验证
}
public function getpage(){//获取page各种验证
if(!empty($_GET['page'])){
if($_GET['page']>0){
if($_GET['page']>$this->numpage){
return $this->numpage;
}else{

return $_GET['page'];
}
}else{
return 1;
}
} else{
return 1;
}
}
//ACTION类分页
function search(){

$search=M("Adve");
$keyword=$_POST['keyword'];

$map['advename']=array('like',"%$keyword%");
//找到搜索数据的总数

import('ORG.Util.Tage');
// $count=$search->count();

$count=$search->where($map)->count();
$listpage=new Tage($count,1);

$rowAll=$search->where($map)->limit($listpage->total)->page($listpage->page)->select();
dump($count);
$Page=$listpage->show();

foreach ($rowAll as $key=>$value){
if($rowAll[$key]['start']=='0'){
$rowAll[$key]['start']='是';
}else{
$rowAll[$key]['start']='否';
}
}

$this->assign('row',$rowAll);//文章内容

$this->assign('page',$Page);

$this->display('search');

}

帮帮我啊 真不知道怎么解决 谢谢大家 解决分全送了
展开
 我来答
497748663
推荐于2016-08-17 · TA获得超过131个赞
知道答主
回答量:227
采纳率:0%
帮助的人:152万
展开全部
第二页没管用 是搜索的值传递没跟过去 你把where里面加 like 我也没测试你的程序 你看看我的这个吧

public function page(){
$User=new NewsModel();
//print_r($User->select()); //关联操作
import("ORG.Util.Page"); // 导入分页类
$map=$_GET[ss];
$count = $User->where("title like '%$map%'")->count(); // 查询满足要求的总记录数
$Page = new Page($count,5); // 实例化分页类 传入总记录数和每页显示的记录数
$list = $User->join("think_type on tid=think_type.id")->where("title like '%$map%'")->limit($Page->firstRow.','.$Page->listRows)->select();
//echo "<pre>";
//print_r($list);
foreach($map as $key=>$val) {

$Page->parameter .= "$key=".urlencode($val)."&";

}
$show = $Page->show(); // 分页显示输出

// 进行分页数据查询 注意limit方法的参数要使用Page类的属性

$this->assign('list',$list); // 赋值数据集

$this->assign("page",$show); // 赋值分页输出

$this->display();

}
更多追问追答
追问
$count=$search->where($map)->count();   已经把搜索的值传过去了,搜索结果是正确的 就是下一页就成了全部数据库数据了,或许是我把搜索做成了ajax搜索才会吧 我试试
追答
因为下一页的数据没“hold”住   你加like试了么?
novice_pegasus
2013-01-28 · TA获得超过624个赞
知道小有建树答主
回答量:722
采纳率:100%
帮助的人:651万
展开全部
你的数据库操作给封装到类里面了,这里看不到。
按理应该是SELECT ....... LIMIT $overows, $rowsonpage这样的语句,$overows代表跳过的记录条数(一般$overows = ($page-1)*$rowsonpage,$page是你当前页码),$rowsonpage代表每页最多可显示的记录条数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式