Tutorial Belajar Pemrograman, membuat game, membuat aplikasi, membuat program, android, game maker, yii, php, CSS, HTML, java, javascript, codeigniter, jquery, Pascal, c++

Sunday, December 15, 2013

Membuat Pagination dan Sorting Dengan Yii Framework - Pagination adalah teknik untuk menampilkan data di mana data yang akan di tampilkan banyak bisa menjadi terbagi - bagi menjadi beberapa halaman sehingga mempermudah user. Bayangkan jika anda memiliki 500 data dalam tabel yang akan di tampilkan dan anda tidak menggunakan pagination maka sudah pasti hasil tampilannya akan menjadi panjang sekali dan juga mempersulit kita untuk melihatnya karna harus menscrollnya terlebih dahulu, terlebih lagi jika koneksi internet yang tidak mendukung dan harus meload 500 data pastinya akan memakan waktu lama.

Baca juga : Cara Membuat Data Validation di Yii Framework

Dengan Yii Framework kita bisa melakukan pagination dengan CDbCriteria, dengan contoh penulisan script seperti berikut :

$pages=new CPagination($count);
$pages->pageSize=$limit;
$pages->applyLimit($criteria);

$count = Jumlah data dalam tabel anda
$limit = Jumlah data yang akan ditampilkan per page

Langsung saja kita mulai prakteknya Membuat Pagination dan Sorting Dengan Yii Framework .Jika anda belum pernah membuat databasenya bisa anda lihat Di Sini dan  Jika anda belum menginstal Yii Di localhost anda dapat melihatnya Di Sini.

1. Controller

Buka kembali file BukuController.php anda dalam file Protected/controller kemudian ubah sedikit fungsi index anda menjadi seperti ini :

public function actionIndex(){
        $criteria= new CDbCriteria();
        
        $model = new buku();
        $count = $model->count($criteria);
        
        $pages=new CPagination($count);
        $pages->pageSize=5;
        $pages->applyLimit($criteria);
        
        $sort=new CSort('buku');
        
        $sort->attributes=array('id','judul','penulis','id_kategori');
        $sort->applyOrder($criteria);
        
        $data=$model->findAll($criteria);
        
        $this->render('index',array('data'=>$data,'pages'=>$pages,'sort'=>$sort));
    }


Maka sekarang script BukuController.php anda selengkapnya menjadi seperti ini :

<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of BukuController
 *
 * @author Jin Toples
 */
class BukuController extends Controller {
    //put your code here
    public $layout='column1';
    const INDEX = 'index';
    
    //function create
    public function actionCreate(){
        $model=new buku;
        $k_model = new kategori;
        
        if(isset($_POST['buku'])){
            $model->judul = $_POST['buku']['judul'];
            $model->penulis = $_POST['buku']['penulis'];
            $model->id_kategori= $_POST['buku']['id_kategori'];
            
            if($model->save()){
                Yii::app()->user->setFlash('success', 'Data berhasil di simpan');
                $this->redirect(array('index'));
            }
        }
        
        $this->render('create',array('model'=>$model,'k_model'=>$k_model));
    }
    
    //function index ( read )
    public function actionIndex(){
        $criteria= new CDbCriteria();
        
        $model = new buku();
        $count = $model->count($criteria);
        
        $pages=new CPagination($count);
        $pages->pageSize=5;
        $pages->applyLimit($criteria);
        
        $sort=new CSort('buku');
        
        $sort->attributes=array('id','judul','penulis','id_kategori');
        $sort->applyOrder($criteria);
        
        $data=$model->findAll($criteria);
        
        $this->render('index',array('data'=>$data,'pages'=>$pages,'sort'=>$sort));
    }
    
    //function update
    public function actionUpdate($id){
        $data=new buku;
        $k_model = new kategori;
        $model=$data->findByPk($id);
        
        if(isset($_POST['buku'])){
            $model->judul=$_POST['buku']['judul'];
            $model->penulis=$_POST['buku']['penulis'];
            $model->id_kategori= $_POST['buku']['id_kategori'];
            
            if($model->save()){
                $this->redirect(array('index'));
            }
        }
        
        $this->render('update',array('model'=>$model,'k_model'=>$k_model));
    }
    
    //function delete
    public function actionDelete($id){
        $model = new buku;
        if($model->deleteByPk($id)){
            $this->redirect(array(self::INDEX));
        }else{
            throw new CHttpException(404,'Data yang di minta tidak tersedia');
        }
    }   
    
    function actionKriteria(){
        $criteria = new CDbCriteria(array('select'=>'*','condition'=>'id="2"'));
        $data = new buku;
        $model = $data->findAll($criteria);
        
        $this->render('kriteria',array('data'=>$model));
                
    }
}

?>

Penjelasan :

$count = $model->count($criteria);

Untuk menghitung semua data yang ada

$pages=new CPagination($count);
$pages->pageSize=5;
$pages->applyLimit($criteria);

Kita membuat sebuah object pagination baru  dengan CPagination, kemudian kita menentukan data yang di tampilkan per page yaitu " 5 ".

2. View

Sekarang ubah file index.php anda yang berada dalam direktori Protected/view/buku menjadi seperti ini :

<?php
    foreach (Yii::app()->user->getFlashes() as $key=>$message){
?>
    <div class="flash-<?php echo $key; ?>
"><?php echo $message; ?></div>
<?php        
}
?>
<?php
    echo CHtml::link('Tambah Buku', array('create'));
    echo " | ";
    echo CHtml::link('Tambah Kategori', array('kategori/create'));
?>
    <div style="float:right;">
        <?php $this->widget('CLinkPager', Array('pages'=>$pages)); ?>
    </div>
<br><br>
<table style="border-collapse: collapse; border: solid 1px #000; " border="1">
<tr sytle="border:1px solid">
        <th><?php echo $sort->link('id'); ?></th>
        <th><?php echo $sort->link('judul'); ?></th>
        <th><?php echo $sort->link('penulis'); ?></th>
        <th><?php echo $sort->link('id_kategori'); ?></th>
        <th>Aksi</th>
    </tr>
<?php foreach ($data as $model): ?>
<tr>
        <td><?php echo $model->id; ?></td>
        <td><?php echo $model->judul; ?></td>
        <td><?php echo $model->penulis; ?></td>
        <td><?php echo $model->kategori->nama_kategori; ?></td>
        <td><?php echo CHtml::link(CHtml::encode('Update'), array('update', 'id'=>$model->id)); ?> | 
            <?php echo CHtml::link(CHtml::encode('Delete'), array('delete', 'id'=>$model->id));?>
        </td>
    </tr>
<?php endforeach; ?>
</table>

Penjelasan :

<?php $this->widget('CLinkPager', Array('pages'=>$pages)); ?>

Kita menggunakan widget CLinkPager untuk menampilkan per page atau halamannya.

Untuk melihat hasilnya, ketikan di url browser :

http://localhost/Belajar_Yii/website/index.php?r=buku

*notes kode yang berwarna merah adalah direktori folder Yii Framework anda di localhost.

Membuat Pagination dan Sorting Dengan Yii Framework

*Notes jika data anda kurang dari limitasi data perpage yang di tampilkan tambahkan lah terlebih dahulu

Sekarang coba anda klik NEXT maka akan berpindah ke page selanjutya, Selanjutnya coba anda klik ID/Judul Buku/Penulis Buku/Id Kategori maka sistem akan otomatis mengurutkannya secara Ascending dan Descending.

Membuat Pagination dan Sorting Dengan Yii Framework sekarang sudah selesai, baca juga tutorial belajar Yii Framework lainnya.

Terima Kasih Telah Mengunjungi Blog Sederhana Ini.

Di Mohon Apabila Anda Ingin Mengcopas Artikel Pada Blog ini Cantumkan URL Sumber.

Sebagai Pengunjung Yang Baik Anda Dapat Meninggalkan Komentar di Blog Sederhana Ini.

Share this post

1 komentar

:) :) :-) :-) :)) :)) =)) =)) :( :( :-( :-( :(( :(( :d :d :-d :-d @-) @-) :p :p :o :o :>) :>) (o) (o) [-( [-( :-? :-? (p) (p) :-s :-s (m) (m) 8-) 8-) :-t :-t :-b :-b b-( b-( :-# :-# =p~ =p~ :-$ :-$ (b) (b) (f) (f) x-) x-) (k) (k) (h) (h) (c) (c) cheer cheer

 
© Jin Toples Programming
Designed by BlogThietKe Cooperated with Duy Pham
Released under Creative Commons 3.0 CC BY-NC 3.0