yii分页与搜索不起作用


yii pagination with searching not working

我在我的列表页面中用搜索项目实现分页(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,

));