pagination

sy mau tanya, sy udh surfing di forum2, tutorial2, stackoverflow, dsb tapi msh belum solve juga :( , masalahnya si pagernya muncul cuman ngaco g sesuai keinginan, barangkali disini ada yg bisa bantu ane gan :unsure:

.

ini di controller




public function actionIndex()

	{

	  

    $model=new Order;

    $criteria = new CDbCriteria;

    

    $total = Order::model()->count($criteria);

    $pages = new CPagination($total);

    $pages->setPageSize(Yii::app()->params['listPerPage']);

    $pages->applyLimit($criteria);

    // $posts = konsumen::model()->findAll($criteria);

    

     

    $this->render('index',

    	array('model'=>$model,

    		// 'list'=>$posts,

    		'pages' => $pages,

    		'item_count'=>$total,

    		'page_size'=>Yii::app()->params['listPerPage'],)) ;

   }



.

ini coding di view nya




 $result = "SELECT * FROM order where date between '$date_first' and '$date_last' and status $status order by id desc";

                    $list = DetailPesanan::model()->findAllBySql("$result"); 

                    if($list)

                    {

                    ?>

                    <div class="tablebx" style="padding-left: 5px; padding-right: 5px;"><!-- End div class="pagecon" --> 

                                                              

                        <table width="100%" border="0" cellspacing="0" cellpadding="0">

                            <tr class="tablebx_topbg">

                                <td><?php echo Yii::t('consumen','No.');?></td> 

                                <td><?php echo Yii::t('consumen','Date');?></td>

                                <td><?php echo Yii::t('consumen','Quantity');?></td>

                                <td><?php echo Yii::t('consumen','Debt');?></td>

                                <td><?php echo Yii::t('consumen','Profit');?></td>

                            </tr>

                            <?php 

                            if(isset($_REQUEST['page']))

                            {

                                $i=($pages->pageSize*$_REQUEST['page'])-9;

                            }

                            else

                            {

                                $i=1;

                            }

                            $cls="even";

                            ?>

                            

                            <?php

                            

                            foreach($list as $list_1)


                            {

                            ?>

                                <tr class=<?php echo $cls;?>>

                                <td><?php echo $i; ?></td>

                                <td><?php echo $list_1->date ?></td>

                                <td><?php echo $rp=number_format($list_1->quantity, 0, ',', '.') ?> Pcs</td>

                                <td>Rp. <?php echo $rp=number_format($list_1->debt, 0, ',', '.') ?></td>

                                <td>Rp. <?php echo $rp=number_format($list_1->profit, 0, ',', '.') ?></td>

                                </tr>

                                <?php

                                if($cls=="even")

                                {

                                    $cls="odd" ;

                                }

                                else

                                {

                                    $cls="even"; 

                                }

                                $i++; 

                            } 

                            ?>                           

                        </table>

                        

                        <div class="pagecon">

	                        <?php                                          

	                          $this->widget('CLinkPager', array(

	                          'currentPage'=>$pages->getCurrentPage(),

	                          'itemCount'=>$item_count,

	                          'pageSize'=>$page_size,

	                          'maxButtonCount'=>5,

	                          //'nextPageLabel'=>'My text >',

	                          'header'=>'',

	                        'htmlOptions'=>array('class'=>'pages'),

	                        ));?>

                        </div> <!-- END div class="pagecon" 2 -->

                        <div class="clear"></div>

                    </div> <!-- END div class="tablebx" -->

                    <?php 

                    }

                    else

                    {

                        echo '<div class="listhdg" align="center">'.Yii::t('consument','data cannot found').'</div>';  

                    }?>



adakah seseorang disini ?

sebenarnya contoh di internet banyak gan, memang harus jeli.

klo mau simple pake aja grid view dan active data provider

contoh:




// controller

$criteria = new CDbCriteria;

$dataProvider = new CActiveDataProvider('Order', array(

    // uncomment

    'criteria' => $criteria,

    'pagination' => array(

        'pageSize' => 10,

    )

));

$this->render('view', array('dataProvider' => $dataProvider));


// view

$this->widget('zii.widgets.grid.CGridView', array(

    'dataProvider'=>$dataProvider,

    // tuliskan nama kolom/field yg ingin ditampilkan

    'columns'=>array(

        'title',          // display the 'title' attribute

        'category.name',  // display the 'name' attribute of the 'category' relation

        'content:html',

     )

));

$this->widget('system.web.widgets.pagers.CLinkPager', array('pages' => $dataProvider->pagination, 'header' => ''));



klo modelnya berelasi tinggal dijoin dicriterianya




$criteria = new CDbCriteria;

$criteria->with = array('detail');



kalo pake gridview gkkn bisa mas soalnya data itu hasil dr search. sy g ngerti ngegabungin query nya

g ada yg g mungkin, sebenarnya yg ingin dipaging DetailPesanan atau Order soalnya kenapa yg dicount order tp kok datanya pesanan. bukankah klo detailpesanan yg pengen dipaging maka seharusnya begini:




//$result = "SELECT * FROM order where date between '$date_first' and '$date_last' and status $status order by id desc";

//                    $list = DetailPesanan::model()->findAllBySql("$result");


$criteria = new CDbCriteria;

if(isset($_GET['date_first']) && isset($_GET['date_last'])) {

    $criteria->addBetweenCondition('date', $_GET['date_first'], $_GET['date_last']);

}

    

$total = DetailPesanan::model()->count($criteria);

$pages = new CPagination($total);

$pages->setPageSize(Yii::app()->params['listPerPage']);

$pages->applyLimit($criteria);



untuk menggabungkan query model bisa pake nama relasi dimodel

misalnya model A dan model B. model A punya relasi B dengan nama relasiB, maka jika data model A ingin diquery beserta data B maka jadinya seperti ini:




class A

{

    public function relations() {

        return array(

            'relasi' => array(self::HAS_ONE, 'B', 'id'),

        );

    }

}


class B {}


$criteria = new CDbCriteria;

$criteria->with = array('relasiB');

// jika model B ingin diberi kondisi pencarian

// $criteria->with = array('relasiB' => array('criteria' => array('isi kondisi untuk model B')));

$a = A::model()->findAll($criteria);

echo $a->relasiB->kolom_b;