我在我的列表页面中用搜索项目实现分页(yii1):当我搜索某个东西时,分页总项目5(我指的是像1 2 3 4 5这样的链接),搜索很好。
当我点击分页链接中的第二个页面时,总项目增加到12个(我指的是像1 2 3 4 5…10 11 12这样的链接)。
我的查询使用like运算符运行良好。我不知道它在哪里正在更改。。
这是在我的控制器中
if((isset($_POST['searchtext'])) && (!empty($_POST['searchtext']))){
$sql ="select * from table1 where name LIKE '''%'.$_POST['searchtext'].'%''" ;
$sql_count = "select count(*) from table1 LIKE '''%'.$_POST['searchtext'].'%''" ;
$count=Yii::app()->db->createCommand($sql_count)->queryScalar();
}else{
$sql = "select * from table1";
$sql_count = "select * from table1";
$count=Yii::app()->db->createCommand($sql_count)->queryScalar();
}
$dataProvider=new CSqlDataProvider($sql, array(
'totalItemCount'=>$count,
'sort'=>array(
'attributes'=>array(
'id','userid','user_email',
),
),
'pagination'=>array(
'pageSize'=>9,
),
));
$this->render('listallview',array(
'dataProvider'=>$dataProvider,
));
我的观点
<ul class="list ">
<?php
$this->widget('bootstrap.widgets.TbListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
));
?>
</ul>
可能是什么问题?
如果要使用分页功能,必须将totalItemCount属性配置为总行数(不分页)。
试试你的控制器:
if((isset($_POST['searchtext'])) && (!empty($_POST['searchtext']))){
$sql ="select * from table1 where name LIKE '''%'.$_POST['searchtext'].'%''" ;
//$sql_count = "select count(*) from table1 LIKE '''%'.$_POST['searchtext'].'%''" ;
//$count=Yii::app()->db->createCommand($sql_count)->queryScalar();
}else{
$sql = "select * from table1";
//$sql_count = "select * from table1";
//$count=Yii::app()->db->createCommand($sql_count)->queryScalar();
}
$count=Yii::app()->db->createCommand('SELECT COUNT(*) FROM table1')->queryScalar();
$dataProvider=new CSqlDataProvider($sql, array(
'totalItemCount'=>$count,
'sort'=>array(
'attributes'=>array(
'id','userid','user_email',
),
),
'pagination'=>array(
'pageSize'=>9,
),
));
$this->render('listallview',array(
'dataProvider'=>$dataProvider,
));