Skip to main content

Membuat Pagination

March 25, 2008 by chandramulyana

chandramulyana's picture

Untuk membuat contoh Pagination, kita buat dulu tabel pagination misalnya

create table pagination(<br>
&nbsp;&nbsp;NoID int,<br>
&nbsp;&nbsp;IsiNo varchar(20)<br>
);<br>

Kemudian kita isi tabelnya seperti berikut :

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

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 :

&lt;?<br>
class <strong>Mpagination</strong> extends Model {
<code>
&nbsp;&nbsp;function <strong>Mpagination</strong>(){<br>
&nbsp;&nbsp;&nbsp;parent::Model();<br>
&nbsp;&nbsp;&nbsp;}
<code>
&nbsp;&nbsp;function AmbilData($num, $offset) {<br>
&nbsp;&nbsp;&nbsp;$query = $this->db->get('pagination', $num, $offset);<br>		
&nbsp;&nbsp;&nbsp;return $query;<br>
&nbsp;&nbsp;&nbsp;}
<code>
}<br>
?><br>

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

&lt;?<br>
class <strong>Pagination</strong> extends Controller {<br><br>
<code>	
&nbsp;&nbsp;function __construct() {<br>
&nbsp;&nbsp;&nbsp;		parent::Controller();<br>
&nbsp;&nbsp;&nbsp;		$this->load->helper('url');<br>
&nbsp;&nbsp;&nbsp;		$this->load->database();<br>
&nbsp;&nbsp;&nbsp;	}
<code>
&nbsp;&nbsp;function index() {<br>		
&nbsp;&nbsp;&nbsp;		<em>//load pagination class</em><br>
&nbsp;&nbsp;&nbsp;		$this->load->library('pagination');
<code>
&nbsp;&nbsp;&nbsp;		<em>// Pengaturan konfigurasi untuk pagination</em><br>
&nbsp;&nbsp;&nbsp;		$config['base_url'] = base_url().'index.php/pagination/index/';<br>
&nbsp;&nbsp;&nbsp;		$config['total_rows'] = $this->db->count_all('pagination');<br>
&nbsp;&nbsp;&nbsp;		$config['per_page'] = '4';<br>
&nbsp;&nbsp;&nbsp;		$config['first_link'] = 'Awal';<br>
&nbsp;&nbsp;&nbsp;		$config['last_link'] = 'Akhir';<br>
&nbsp;&nbsp;&nbsp;		$config['next_link'] = 'Selanjutnya';<br>
&nbsp;&nbsp;&nbsp;		$config['prev_link'] = 'Sebelumnya';<br><br>
&nbsp;&nbsp;&nbsp;		$this->pagination->initialize($config);
<code>
&nbsp;&nbsp;&nbsp;		<em>//load model and ambil hasilnya</em><br>
&nbsp;&nbsp;&nbsp;		$this->load->model('Mpagination');<br>
&nbsp;&nbsp;&nbsp;		$data['hasil'] = $this->Mpagination->AmbilData($config['per_page'],$this->uri->segment(3));
<code>
&nbsp;&nbsp;&nbsp;		<em>// load the HTML Table Class</em><br>
&nbsp;&nbsp;&nbsp;		$this->load->library('table');<br>
&nbsp;&nbsp;&nbsp;		$this->table->set_heading('NoID', 'IsiNo');
<code>
&nbsp;&nbsp;&nbsp;		<em>// load the view</em><br>
&nbsp;&nbsp;&nbsp;		$this->load->view('v_pagination', $data);<br>
&nbsp;&nbsp;&nbsp;	}
<code>
}<br>
?>

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

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

Untuk lebih jelasnya silahkan lihat CodeIgniter User Guide tentang Pagination Class

Comments

Saya sudah berhasil

November 29, 2010 by Anonymous, 1 year 9 weeks ago
Comment: 7433

Anonymous's picture

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 depannyaSaya 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.HP0-J38
000-153
JN0-532
000-977
000-200
640-460
NS0-510
642-145
199-01
000-105

linknya mas

April 19, 2010 by cuplis, 1 year 41 weeks ago
Comment: 6279

cuplis's picture

jadi pas saya klik angka 2 langsung link ke http://example.com/index.php/pagination/index/3
itu bagaimana y mas

kalo ga salah di atur di config.php
tapi,saya tidak tahu
terima kasih

Database error

April 18, 2010 by cuplis, 1 year 41 weeks ago
Comment: 6275

cuplis's picture

salam kenal

mas saya sudah atur di database.php
namun tidak bisa
kenapa y mas

$db['default']['hostname'] = "/localhost/XE";
$db['default']['username'] = "achmadmuchlis";
$db['default']['password'] = "inf44";
$db['default']['database'] = "";
$db['default']['dbdriver'] = "oci8";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";

$db['default']['hostname'] =

October 23, 2010 by artha_86, 1 year 15 weeks ago
Comment: 7270

artha_86's picture

$db['default']['hostname'] = "/localhost/XE";

hostname itu harusnya "localhost" aja mas bukan "/localhost/XE"

Menambahkan parameter di model

December 3, 2009 by satandik, 2 years 9 weeks ago
Comment: 5734

satandik's picture

Mas saya mau nanya klo di modelnya ditambahin parameter seperti ini :

function getData($parameter, $num, $offset)
{
$query = $this->db->get_where('namatabel', array('namakolom' => $parameter), $num, $offset);
return $query;
}

pada views sama controller nya gimana mas?
Kemaren saya mencoba dengan menambahkan parameter pada controllernya tetapi link paging nya muncul tetapi datannya tidak tertampil.....
Mohon bantuannya mas....

Sekian Terima kasih.....

Angka link-nya tetap di 1

August 11, 2009 by lodonk, 2 years 25 weeks ago
Comment: 5619

lodonk's picture

Mas, trima kasih tutorialnya.
Saya udah hampir sukses bikin pagination, tapi kalo di klik angka untuk pindah halamannya tetap di nomor 1. Itu kenapa ya? Apa ada config yang harus di set lagi?

Makasih...

Sudah terjawab...

August 11, 2009 by lodonk, 2 years 25 weeks ago
Comment: 5620

lodonk's picture

Sudah terjawab... ^_^
Ternyata kurang $config['uri_segment']. hehe...

Mas lodonk naro

November 3, 2010 by gokil, 1 year 13 weeks ago
Comment: 7333

gokil's picture

Mas lodonk naro $config['uri_segment'] nya di mana?
config.php or Pagination.php,, aq dah taro ditempat salah satunya tetap gagal
http://example.com/index.php/pagination/index/3
muncul
The requested URL /pagination/page/3 was not found on this server.

mohon pencerahannya

Nanya $offset

March 10, 2009 by dennysetia, 2 years 47 weeks ago
Comment: 236

dennysetia's picture

Mohon dijelaskan tentang input $offset pada fungsi ambil data yang didapat dari uri segment 3.
terima kasih...

--denny--

oh maksudnya offset seperti ini ya

$query = $this->db->query("select * from pagination LIMIT $offset,$num");
 

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

October 13, 2008 by hardyboyz, 3 years 16 weeks ago
Comment: 83

hardyboyz's picture

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

<strong>Severity: Notice
Message: Undefined property: CI_Loader::$table</strong>

Juga ada pesan error seperti ini

<strong>Call to a member function generate() on a non-object in...,</strong>

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

salam,

pemula...

Saya sudah berhasil menampilkan paging cuma

July 12, 2008 by ivanlaksana, 3 years 29 weeks ago
Comment: 43

ivanlaksana's picture

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 ..

July 14, 2008 by Anonymous, 3 years 29 weeks ago
Comment: 44

Anonymous's picture

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.

thank atas pencerahannya ya

April 5, 2010 by matrix22, 1 year 43 weeks ago
Comment: 6242

matrix22's picture

thank atas pencerahannya ya

kalau nama Databasenya apa?

June 18, 2008 by Anonymous, 3 years 33 weeks ago
Comment: 31

Anonymous's picture

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?

June 18, 2008 by Anonymous, 3 years 33 weeks ago
Comment: 32

Anonymous's picture

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

May 5, 2008 by Anonymous, 3 years 39 weeks ago
Comment: 20

Anonymous's picture

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:

November 11, 2008 by syabac, 3 years 12 weeks ago
Comment: 103

syabac's picture

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

semoga membantu..

Pencerahan

May 5, 2008 by Anonymous, 3 years 39 weeks ago
Comment: 21

Anonymous's picture

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

pqsql itu postre+sql

March 28, 2009 by Anonymous, 2 years 44 weeks ago
Comment: 492

Anonymous's picture

jadi pasti adalah perintah limitnya.

kan perintah standar sql tuh

pgsql ada limit nya

June 25, 2008 by mul14, 3 years 32 weeks ago
Comment: 36

mul14's picture
Premium Drupal Themes by Adaptivethemes