Posted by: Furqon | November 27, 2008

Setting CodeIgniter + AdoDB

Dikarenakan adanya request dari seorang pengunjung untuk mensettingkan codeigniter-nya dengan adoDB. Dengan senang hati saya akan sampaikan langkah-langkahnya.

Langkahs:

  1. mungkin liat-liat dulu kenapa musti gunakan adodb ketimbang fasilitas yang sudah diprovide oleh CI. kali aja abis baca itu gak jadi nerusin, kan ga jadi buang waktu :D
  2. klo langkah satu sudah ok, donlod adodb
  3. extract file ke dalam CI/system/application/libraries/adodb/
  4. kita buat CI untuk me-load adodb yang baru kita masukkan
    buka file CI/system/application/config/autoload.php, tambahkan load libraries:
    $autoload['libraries'] = array(‘database’, ‘adodbloader’); 
  5. lalu kita coba liat libraries adodbloader ini (baca: dibuat ato donlod)

CI/system/application/libraries/Adodbloader.php

<?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)) {
            // fallback to using the CI database file 
            include(APPPATH.’config/database’.EXT); 
            $group = ‘default’; 
            $dsn = $db[$group]['dbdriver'].’://’.$db[$group]['username'] 
                   .’:’.$db[$group]['password'].’@’.$db[$group]['hostname']
                   .’/’.$db[$group]['database']; 
        } 

        // $ci is by reference, refers back to global instance
        $ci->adodb =& ADONewConnection($dsn);

        if ($db_var) {
            // also set the normal CI db variable
            $ci->db =& $ci->adodb; 
        } 

        if ($debug) {
            $ci->adodb->debug = true;
        }
    }
}

Ini dulu saya download dari manaaa gitu, terus ada satu conditional blok yang saya hapus untuk menskip pembacaan file adodb.php (dsn file), sehingga dia langsung otomatis baca CI/system/application/config/database.php. Jadi Setting database.php kamu sesuai konfigurasi database yang ada.

Selanjutnya tinggal kita coba apakah settingan kita sudah berjalan atau belum. Edit file CI/system/application/controllers/welcome.php.

function index(){

    $this->adodb->debug=1; 
    echo $this->adodb->GetOne(“SELECT now()”);
    //$this->load->view(‘welcome_message’);

O, sekarang coba buka http://localhost/CI. Jikalau yang keluar cacing, maka kemungkinan besar loader gagal. Jika yang keluar jin botol anda mungkin seberuntung Ali Baba :)

Gunakan selalu $this->adodb->AdoDBMethod();

gud lak brader…

tested on CI 1.7


Responses

  1. Mas furqon,

    khusus untuk postgre, sepertinya ada kiat tersendiri untuk bisa konek. dikarenakan:
    1. dbdriver yang diprovide codeigniter hanya postgre
    2. dbdriver dari adodb adanya postgres,postgres7 dst..

    kiatnya akhirnya aku hardcode baris $dsn dst…
    ganti
    $db[$group]['dbdriver']
    dengan string:
    ‘postgres7′

    demikian..
    salam kenal mas..
    :)

  2. [...] ดูอีกที ที่ unluckyluke.wordpress.com ตัวนี้ก็ดีครับ [...]

  3. bozzz… ni tak coba konek ke oci8 kok ndak isa ya???

  4. @konoha:
    error messagenya apa yah bang?

  5. muncul err :
    Message: ocilogon() [function.ocilogon]: ORA-12545: Connect failed because target host or object does not exist

    trus muncul juga :
    Fatal error: Call to undefined method stdClass::GetOne() in D:\htdocs\CI\system\application\controllers\welcome.php on line 14

    pusiingggg… napa ya gitu itu???
    oia di config/database.php tak isi gini :
    $db['default']['hostname'] = “DBSERVER2″; //TNSNAME
    $db['default']['username'] = “konoha”;
    $db['default']['password'] = “konoha”;
    $db['default']['database'] = “orcl”;
    $db['default']['dbdriver'] = “oci8″;

    tak tunggu pencerahannya bozz..

    nb: nice to talk with u pall, muachhhh… ^_^

    • baydewei..
      adodbloader nya sudah diload belum yah?
      $autoload['libraries'] = array(’database’, ‘adodbloader’);

      ini opsi dsn adodb untuk oci8
      $dsn = ‘oci8://user:pwd@tnsname/?persist’; # persist is optional
      $dsn = ‘oci8://user:pwd@host/sid’;
      $dsn = ‘oci8://user:pwd@/’; # oracle on local machine

      liat hardcode-nya mbak sarah deh…
      semoga membantu..

  6. okkke sipp…
    it works

  7. Mas, Kalau Errornya seperti ini kenapa yah?
    Parse error: syntax error, unexpected T_STRING in C:\AppServ\www\yayan\system\application\libraries\adodbloader.php on line 1

    • cek lagi deh baris satunya.. itu kemungkinan besar misstyped aja..


Leave a response

Your response:

Categories