Blog Archives

Integrasi CodeIgniter, Adodb, dan PostgreSQL

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:

  1. Perhatikan konfigurasi pg_hba.conf, karena apabila ini salah hampir dapat dipastikan anda akan mendapatkan error BSoD (Blank Screen of Death)
  2. 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”