Apa ya jadinya kalau kehebatan framework CodeIgniter (CI) digabungkan dengan kemudahan pemrograman ala Adodb dan dipasangkan dengan DBMS yang super powerful seperti Postgres. Hmm… pasti maknyuss tuh. Pertanyaannya adalah gimana caranya ya biar tiga mahluk ini bisa saling berkomunikasi dan menjalin hubungan silaturahmi yang erat (bahasa lain integrasi xixixxixi).
Setelah ngutak-atik seharian akhirnya ketemu juga caranya. Bagi yang pengen nyoba bisa berikut caranya :
- Jika belum memiliki ketiga komponen ini, maka download terlebih dahulu. CodeIgniter bisa di download disini, Adodb disini, dan PostgreSQL disini
- Lakukan instalasi CodeIgniter terlebih dahulu. Caranya tinggal extract saja file hasil download tadi ke dalam htdocs webserver. Bagi yang telah memiliki CI bisa melewati langkah ini.
- Instalasi PostgreSQL. Bagi yang telah memiliki PostgreSQL juga bisa melewati langkah ini.
- Ekstrak Adodb kedalam direktori CI_DIR/system/application/libraries
- Lakukan konfigurasi CI agar untuk dapat terkoneksi ke PostgreSQL. Dapat dilakukan dengan memodifikasi file CI_DIR/system/application/config/database.php.
- Lakukan modifikasi pada file CI_DIR/system/application/config/autoload.php.
$autoload['libraries'] = array(‘database’,'adodbloader’);
- Buat loader untuk Adodbnya. Caranya buat file dengan nama Adodbloader.php di dalam direktori CI_DIR/system/application/libraries (satu direktori dengan hasil ekstrak Adodb). Gunakan code berikut.
<?php if(!defined(‘BASEPATH’)) exit(‘No direct script access allowed’);
class Adodbloader{
function Adodbloader(){
if(!class_exists(‘ADONewConnection’))
require_once(APPPATH.’libraries/adodb/adodb.inc’.EXT);$obj =& get_instance();
$this->_init_adodb_library($obj);
}function _init_adodb_library(&$ci){
$db_var = false;
$debug = false;if(!isset($dsn)){
//using the CI database configuration
include(APPPATH.’config/database’.EXT);
$group = ‘default’;$dsn = ‘postgres’.'://’.$db[$group]['username'].’:’.$db[$group]['password'].’@’.$db[$group]['hostname'].’/’.$db[$group]['database'];
}//creating the instance
$ci->adodb = & ADONewConnection($dsn);if($db_var){
//set the CI database object to use adodb instance
$ci->db =& $ci->adodb;
}if($debug){
$ci->adodb->debug = true;
}
}
}?>
- Pastikan konfigurasi pg_hba.conf telah mengizinkan untuk menerima koneksi dari localhost ke DBMS PostgreSQL. Jika belum silahkah buka pg_hba.conf kemudian tambahkan baris beikut
host all all 127.0.0.1/32 trust
Okay, setelah semuanya selesai saatnya mencoba hasil integrasi ini apakah berhasil atau tidak. Cara paling mudah edit file CI_DIR/system/application/controllers/welcome.php. Modifikasi fungsi indexnya sebagai berikut :
function index(){
$this->adodb->debug=1;
$data=$this->adodb->GetAll(“SELECT field_yang_ingin_di_select FROM nama_tabel”);
print_r($data);
//$this->load->view(‘welcome_message’);
}
Jika hasilnya keluar, berarti konfigurasi yang dilakukan sudah betul. Jika terdapat error maka cermati error tersebut lalu lihat kembali dimana kira-kira yang salah. Untuk lebih jelasnya lihat note dibawah.
Note:
- Perhatikan konfigurasi pg_hba.conf, karena apabila ini salah hampir dapat dipastikan anda akan mendapatkan error BSoD (Blank Screen of Death)
- Untuk pengisian driver name pada DSN yang terdapat dalam Adodbloader.php gunakan “postgres”. Ada huruf “s” nya. Karena biasanya kalau menggunakan konfigurasi internal CI nama drivernya “postgre”


adi dhanu said,
July 16, 2010 at 1:12 am
ehh…ntu yg bner “posgres” apa “postgres”
bisa aja ni si abang masukin dimari…
mayan tuh config pg_hba.conf nya..
GLG said,
July 16, 2010 at 9:28 am
Postgres coy… mangap salah ketik udah malem…. xixiixi.. Udah ane revisi tuh
pard1 said,
July 16, 2010 at 11:10 am
Ketigax…
ayoe_shiroihana said,
July 16, 2010 at 2:43 pm
wahahaha.. mantab dah mbah.. tumben malem2 malah siwer matanya? bukannya ktnya justru malam itu lu lg kenceng2nya konsentrasi..? wkwkwk..
keempax..
GLG said,
July 16, 2010 at 4:08 pm
Justru.. karena lagi konsentrasi fungsi organ tubuh lainnya menurun…