Membuat Pagination

Untuk membuat contoh Pagination, kita buat dulu tabel pagination misalnya

create table pagination(
  NoID int,
  IsiNo varchar(20)
);

Kemudian kita isi tabelnya seperti berikut :

INSERT INTO pagination VALUES(1,'Data ke satu');
INSERT INTO pagination VALUES(2,'Data ke dua');
INSERT INTO pagination VALUES(3,'Data ke tiga');
INSERT INTO pagination VALUES(4,'Data ke empat');
INSERT INTO pagination VALUES(5,'Data ke lima');
INSERT INTO pagination VALUES(6,'Data ke enam');
INSERT INTO pagination VALUES(7,'Data ke tujuh');
INSERT INTO pagination VALUES(8,'Data ke delapan');
INSERT INTO pagination VALUES(9,'Data ke sembilan');
INSERT INTO pagination VALUES(10,'Data ke sepuluh');
INSERT INTO pagination VALUES(11,'Data ke sebelas');
INSERT INTO pagination VALUES(12,'Data ke duabelas');
INSERT INTO pagination VALUES(13,'Data ke tigabelas');
INSERT INTO pagination VALUES(14,'Data ke empatbelas');
INSERT INTO pagination VALUES(15,'Data ke limabelas');

Sekarang kita buat Model,Controller, dan Views-nya

MODEL
Model digunakan untuk mengambil data dari database.
Buatlah sebuah file dengan nama mpagination.php dan simpan di folder
application/models/
Isi dari mpagination.php adalah sebagai berikut :


<?
class Mpagination extends Model {

  function Mpagination(){
   parent::Model();
   }

  function AmbilData($num, $offset) {
   $query = $this->db->get('pagination', $num, $offset);
   return $query;
   }

}
?>

CONTROLLER
Buatlah sebuah file dengan nama pagination.php dan simpan di folder
application/controllers/
Isi dari pagination.php adalah sebagai berikut :

<?
class Pagination extends Controller {

  function __construct() {
    parent::Controller();
    $this->load->helper('url');
    $this->load->database();
    }

  function index() {
    //load pagination class
    $this->load->library('pagination');

    // Pengaturan konfigurasi untuk pagination
    $config['base_url'] = base_url().'index.php/pagination/index/';
    $config['total_rows'] = $this->db->count_all('pagination');
    $config['per_page'] = '4';
    $config['first_link'] = 'Awal';
    $config['last_link'] = 'Akhir';
    $config['next_link'] = 'Selanjutnya';
    $config['prev_link'] = 'Sebelumnya';
    $this->pagination->initialize($config);

    //load model and ambil hasilnya
    $this->load->model('Mpagination');
    $data['hasil'] = $this->Mpagination->AmbilData($config['per_page'],$this->uri->segment(3));

    // load the HTML Table Class
    $this->load->library('table');
    $this->table->set_heading('NoID', 'IsiNo');

    // load the view
    $this->load->view('v_pagination', $data);
    }

}
?>

VIEWS
Buatlah sebuah file dengan nama v_pagination.php dan simpan di folder
application/views/
Isi dari v_pagination.php adalah sebagai berikut :

<html>
<head>
<title>Membuat Pagination</title>
</head>
<body>
  <h1>Membuat Pagination</h1>
  <? echo $this->table->generate($hasil); ?>
  <? echo $this->pagination->create_links(); ?>
</body>
</html>

Untuk lebih jelasnya silahkan lihat CodeIgniter User Guide tentang Pagination Class

Comments

Artikel di atas, gagal....Error..mohon bantuannya

Maaf, mungkin ada kesalahan di saya, ketika saya run..muncul pesan seperti di bawah ini

Severity: Notice
Message: Undefined property: CI_Loader::$table

Juga ada pesan error seperti ini

Call to a member function generate() on a non-object in...,

kira-kira salah dimana ya saya? mohon bimbingannya...

salam,

pemula...

Regards,

HardyBoyz

Saya sudah berhasil menampilkan paging cuma

Saya sudah berhasil menampilkan paging cuma apakah urutan dan layoutnya bisa kita atur, karena saya bingung ngatur urutannya field2 misalkan noid jadi di belakang dan isi datan di depannya

Re : Saya sudah berhasil menampilkan paging cuma ..

Coba lihat baris berikut pada controllernya:


//load model and ambil hasilnya
$this->load->model('Mpagination');
$data['hasil'] = $this->Mpagination->AmbilData($config['per_page'],$this->uri->segment(3));

baris di atas adalah proses pengambilan data dari database menggunakan fungsi AmbilData pada model Mpagination.

Sekarang kita lihat fungsi AmbilData

function AmbilData($num, $offset) {
$query = $this->db->get('pagination', $num, $offset);
return $query;
}

Fungsi di atas adalah mengambil data dari table "pagination" sesuai dengan urutan field yang ada ditable. Seperti perintah :

SELECT * FROM pagination;

Jika urutannya ingin diubah silahkan ubah proses pengambilan datanya :

function AmbilData($num, $offset) {
$this->db->select('IsiNo, NoID');
$query = $this->db->get('pagination', $num, $offset);
return $query;
}

Selamat Mencoba.

kalau nama Databasenya apa?

nama databasenya apa?

trus sintak ini
$query = $this->db->get('pagination', $num, $offset);
maksudnya apa? pagination ini nama database atau nama tabel?

contoh diatas menggunakan mysql atau postgres?

terima kasih

Re : kalau nama Databasenya apa?

Nama databasenya terserah, mau pakai nama apa saja.

Sebelum mencoba pagination ini, buatlah sebuah database dan user untuk mengakses database tersebut (kebetulan untuk contoh di atas, saya menggunakan MySQL).

Jangan lupa untuk mengatur konfigurasi database.php di /system/application/config

Setelah buat databasenya, baru buat table dengan nama table-nya : pagination (bisa dilihat contoh di atas)

Untuk sintaks
$query = $this->db->get('pagination', $num, $offset);

pagination = nama tabelnya
$num = limitnya
$offset = mulainya

Berikut ini keterangan dari User_Guide-nya CI di
Database Class -> Active Record Class -> Selecting Data

The second and third parameters enable you do set a limit and offset clause:
$query = $this->db->get('mytable', 10, 20);

// Produces: SELECT * FROM mytable LIMIT 20, 10 (in MySQL. Other databases have slightly different syntax)

Demikian dari saya, mudah-mudahan bermanfaat.

pencerahan

mas kenapa ya ko tampilanya g muncul blank putih gt aza aku pake database postgres, tapi kalau pake mysql berhasil tampil pagination nya knp ya mas mohon bantuanya sdh 3 hr ni ngoprek tp blm bs jg

bls:

di system/application/config/database.php udah disetting database drivernya postgre blom??
kalo blom coba ganti menjadi
$db['default']['dbdriver'] = "postgre";

semoga membantu..

regards,
Syamsul Bachri
IT Beginner
Computer Science, Bogor Agricultural University
http://syamsulbachri.co.cc

Pencerahan

Wah, maaf sekali saya belum pernah pakai postgres.
Mungkin dari rekan-rekan lain ada yang tau?
Apakah di postgress ada sintaks LIMIT untuk membatasi apa yang kita lihat dengan perintah SELECT ?

Terima kasih,
Chandra

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.