Pagination adalah library yang sepelenamun sangat2 penting tentunya buat Anda yang suka membuat aplikasi web/website dengan data yang sangat banyak, karena pagination
memungkinkan Anda untuk menyeleksi dan menampilkan data hanya sebagian data tertentu per halamannya.
Library Pagination secara default sudah ada di dalam framework Codeigniter, dan 100% Customize, bisa diubah tampilannya sesuai yang kita inginkan.
OK, silakan ikuti tutorialnya…
Kita buat contoh kasus terlebih dahulu, kasus yang tentunya memerlukan pagination. Yup, BUKU TAMU! Buku tamu adalah fitur untuk pengunjung yang akan meninggalkan pesan di website. Kalo pengunjungnya ada 1000 orang dan kita menampilkannya 1000 baris juga kan ga mungkin, maka dari itu kita harus memakai pagination…
Untuk mengikuti tutorial ini, Anda harus sudah meload library database terlebih dahulu di /system/application/config/autoload.php
Silakan copy SQL berikut untuk membuat tablebukutamu dan memasukkan datanya: CREATE TABLE IF NOT EXISTS `bukutamu` (
`id` INT(11) NOT NULL AUTO_INCREMENT, `nama` VARCHAR (100) NOT NULL,
`email` VARCHAR (100) NOT NULL, `pesan` text NOT NULL,
`created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
---- Dumping data for table `bukutamu`
--INSERT INTO `bukutamu` (`id`, `nama`, `email`, `pesan`, `created`) VALUES (1, 'Albert Einstein', '[email protected]' , 'Konten yang sangat menarik dan membantu saya dalam pemrograman web.. ;)', '2010-10-23 09:06:12'), (2, 'Sabrina', '[email protected]', 'Like this, web yang sangat membantu saya.. :)', '2010-10-23 20:58:01'),
(3, 'zakky', '[email protected]', 'keren bos.. webnya sangat membantu.. ', '2010-10-23 21:22:37'),
(4, 'Bernand Simamora', '[email protected]' , 'Web Tutorial yang sangat bagus, nilai 100 dari saya.. Silakan kembangkan lebih jauh bakat Anda dalam pemrograman Web ;)', '2010-10-24 08:16:47'),
(5, 'Robert Dawn', '[email protected]' , 'That''s good man!', '2010-10-24 08:16:47'),
(6, 'Rizal Juned', '[email protected]', 'bisaan euy, ajarkeun lah.... keren2 wae blogna mah... :D', '2010-10-24 08:18:05'),
(7, 'Andi Maulana', '[email protected]' , 'Good luck!', '2010-10-24 08:18:05'),
(8, 'Pak Lurah', '[email protected]', 'Tutorialnya tambahin lagi dunk gan... :)', '2010-10-24 08:20:59'),
(9, 'Luna Apridola', '[email protected]', 'bagus bgt tutorialnya!!! thankzz', '2010-10-24 08:20:59');
Setelah table dan data terbentuk, maka sekarang tinggal dibuat modelnya di CI… /system/application/models/bukutamu_model.php
<?php /** * Description of bukutamu_model * * @author cheyuz */
class Bukutamu_Model extends Model {
function __construct() {
parent::Model(); }
function get($limit = array()) {
if ($limit == NULL)
return $this->db->get('bukutamu')->result(); else
return $this->db->limit($limit['perpage'], $limit['offset'])->get('bukutamu')->result();
} } ?>
Function get()yang ada dalam model tersebut adalah untuk mengambil semua data yang ada di tablebukutamu, dengan parameter $limit yang nantinya akan kita pergunakan untuk pagination. Jika$limittidak diisi, maka data akan ditampilkan semuanya.
OK, setelah model sudah dibuat, maka langkah selanjutnya adalah membuat Controller. /system/application/controllers/bukutamu.php <?php /** * Description of bukutamu * * @author cheyuz */
class BukuTamu extends Controller {
function __construct() {
parent::Controller();
$this->load->helper('url'); //load helper URL untuk memanggil function base_url()
$this->load->model('bukutamu_model' ); }
function index($offset = 1) {
//tentukan jumlah data per halaman $perpage = 3;
//load library pagination
//untuk konfigurasi pagination $config = array(
'base_url' => base_url() . 'bukutamu/index/' ,
'total_rows' => count($this->bukutamu_model->get()), 'per_page' => $perpage,
);
//inisialisasi pagination dn config di atas $this->pagination->initialize($config);
$data['bukutamu'] = $this->bukutamu_model->get(array('perpage' => $perpage, 'offset' => $offset));
//tampilkan data
$this->load->view('bukutamu_view', $data); }
} ?>
Untuk memanggil functionbase_url(), Anda harus meload terlebih dahulu URL Helper (di atas sudah diload di constructor).Base_url() adalah function untuk mengambil string web root kita, misalnya http://localhost/webku.
OK, untuk konfigurasi Pagination akan saya jelaskan satu2:
1. base_url: adalah url di mana action untuk memanggil bukutamu ini, karena di sini code terdapat di function index, maka base_url untuk pagination adalah:
base_url().'bukutamu/index/'
2. total_rows: adalah total data, yaitu semua data buku tamu yang diambil dari function get() di bukutamu_model
3. per_page: adalah jumlah data perhalaman, kita set menjadi 3
• Banyak sekali konfigurasi yang dapat kita atur di library pagination, dan konfigurasi itu sendiri bisa disimpan di folder /system/config/pagination.php, jadi Anda tidak usah mengeset konfigurasi lagi di setiap Controller.
• Parameter $offset sangat diperlukan karena untuk menentukan limit dan offset untuk menampilkan isi data di setiap halaman
Sekarang kita buat view dengan namabukutamu_view.php. /system/application/views/bukutamu_views.php
<?php foreach ($bukutamu as $bt): ?> <div>
<div><b> <?php echo $bt->nama ?> </b></div> <span> <?php echo $bt->email ?> </span> <p> <?php echo $bt->pesan ?> </p>
</div> <hr />
<?php endforeach; ?>
Silakan jalankan aplikasi Anda di browser… udah?
“lho, lho, data kok cuman tampil 3?”
Iya, emang seperti itu, hanya saja kita belum menampilkan link paginationnya. Untuk menampilkannya, tambahkan kode php berikut ini:
<?php echo $this->pagination->create_links(); ?> jadi kode di view lengkapnya seperti ini:
<?php foreach ($bukutamu as $bt): ?> <div>
<div><b> <?php echo $bt->nama ?> </b></div> <span> <?php echo $bt->email ?> </span> <p> <?php echo $bt->pesan ?> </p>
</div> <hr />
<?php endforeach; ?>
<?php echo $this->pagination->create_links(); ?> Silakan jalankan browser Anda…
Jika Anda mengikuti tutorial dengan benar, Anda akan melihat link Pagination di bawah daftar bukutamu..
Untuk memanipulasi tampilan pagination, silakan ikuti cara saya berikut:
Buatlah filepagination.phpdi dalam direktori/system/application/config, kemudian tambahkan baris konfigurasi berikut:
<?php
$config['full_tag_open'] = '<div class="pagination">'; $config['full_tag_close' ] = '</div>';
$config['next_link'] = 'Lanjut »'; $config['prev_link'] = '« Kembali';
$config['num_tag_open'] = '<div class="digit">'; $config['num_tag_close'] = '</div>';
$config['cur_tag_open'] = '<div class="digit current">'; $config['cur_tag_close'] = '</div>';
$config['num_links'] = 1;
$config['last_link'] = '<b>Terakhir ›</b>'; $config['first_link'] = '<b>‹ Pertama</b>'; ?>
Kemudian tambahkan CSS berikut: /**
@author Cheyuz **/
.pagination{ background : #eee; margin: 5px; padding: 10px;} .pagination .digit{ padding: 0 10px 0 10px; display: inline;}
.pagination .digit:hover, .pagination .current{ padding: 2px 10px 2px 10px; background : #fff; font-weight: 900; -moz-border-radius :5px}
maka tampilannya akan berubah menjadi seperti berikut: 1 2 3 4 Lanjut » Terakhir › Selamat mencoba!
HMVC singkatan dari Hierarchical-Model-View-Controller, yang artinya pola MVC tetapi berupa Hirarki.
Hampir sama dengan MVC, hanya saja di sini MVC tersebut disimpan di dalam banyak modul, jadi setiap modul terdapat Model, View, dan Controller.
Nah, selain framework lain seperti Kohana, Zend, dan lain-lain, kita juga dapat menerapkan pola seperti ini di dalam Framework Codeigniter, caranya yaitu dengan menggunakan
Modular Extensions, yang dapat Anda load di sini Instalasi
1. Download modular extensions CI di sini. 2. Di dalamnya, terdapat 3 buah file, yaitu:
○ MY_Router.php
○ Modules.php
○ Controller.php
3. Simpan ketiga file itu di dalam folder library di CI Anda, yaitu
/system/application/libraries/
4. Buatlah folder modules di dalam /system/application, sehingga terdapat folder baru dengan path: /system/application/modules
Setelah diinstall, berikut adalah cara penggunaan modular extensions. Cara Menggunakan
Controller disimpan di dalam folder modules/nama_controller. Jadi, buatlah folder baru sebagai nama moduldi dalam modules, misalnya bukutamu. Kemudian, buatlah folder baru bernamacontrollersdan simpan di dalam folder
/system/application/modules/bukutamu/.
Buatlah nama controller yang akan Anda buat, misalnyabukutamu.php dan simpan di dalam folder controllersyang ada di dalam folder bukutamu.
Kita tidak akan menggunakan folder controllers bawaan dari CI yang ada di
folder /system/application/controllers, tetapi kita menggunakan controllers yg ada di dalam masing-masing modul yang ada di dalam folder modules, untuk kasus ini, controller bernama bukutamu.php disimpan di dalam path:
/system/application/modules/bukutamu/controllers/
Begitu juga untuk model dan view, bahkan untuk modul yg berbeda, Anda simpan semua file di dalam masing2 folder dengan nama modul Anda, dan disimpan di dalam folder
modules…. sehingga setiap modul mempunyai MVC (Model, View, dan Controller) Contoh
Untuk contoh, kita bisa ambil studi kasus untuk controller User. Controller: user.php
<?php
class User extends Controller {
function __construct() { parent::Controller(); } function index() { $this->load->view('user/user_view'); } // ...
//... Kode program Anda // ...
} ?>
Controller user.phpdisimpan di:
/system/application/modules/user/controllers/user.php
Model: user_model.php <?php
class User_model extends Model { function __construct() { parent::Model(); } // ...
//... Kode program Anda // ...
} ?>
Model user_model.php disimpan di:
/system/application/modules/user/models/user_model.php
View: user_view.php
Ini adalah view untuk user
View user_view.phpharus disimpan di:
/system/application/modules/user/views/user_view.php
Catatan:
Untuk penamaan file model dan view, tidak harus user_model.php atau user_view.php, itu sesuai dengan style programming Anda, Anda dapat juga menggunakan nama ini misalnya model: m_user.php dengan view: index.php. Itu tergantung style coding Anda
Berikut ini contoh struktur path dengan menggunakan modules: /system/application/modules/user/controllers/user.php /system/application/modules/user/models/user_model.php /system/application/modules/user/views/user_view.php /system/application/modules/content/controllers/content.php /system/application/modules/content/models/content_model.php /system/application/modules/content/views/content_view.php
/system/application/modules/bukutamu/controllers/bukutamu.php /system/application/modules/bukutamu/models/bukutamu_model.php /system/application/modules/bukutamu/views/bukutamu_view.php dst…..
Catatan:
Untuk Model, Anda direkomendasikan menyimpannya di luar modular, kenapa? karena pengalaman saya, 1 model itu bisa dipake beberapa modul, j adi untuk memudahkan pencarian, model mending disimpan di struktur default CI, yaitu
/system/application/models
Jika model berada di luar module, maka strukturnya adalah sperti berikut:
Apa Kelebihan Menggunakan Pola HMVC?
Kelebihan dari HMVC yaitu program menjadi modular, yang artinya programmer dapat mengerjakan masing2 module tanpa mengganggu direktori yang sedang orang lain kerjakan. Kedua, jika misalnya kita ingin menggabungkan hasil kerjaan kita dengan orang lain maka sangat mudah, karena kita tinggal mengkopi modul kita ke direktori modules di komputer master, sehingga dengan cara seperti ini kita tidak kesulitan dalam menangani konflik file yang sedang sama-sama diedit (misalnya mengedit folder controller secara bersamaan). Banyak kasus yang dapat dipermudah dengan menggunakan HMVC…