Rabu, 14 Januari 2015

Konfigurasi Codeigniter 2.x.x dengan SQL Server 2008/2012 (Update)

Sudah lama sekali saya tidak menulis artikel diblog ini, mungkin ini yang dinamakan sindrom males ngetik ( XD ).
Dalam artikel saya yang sebelumnya mengenai Konfigurasi Codeigniter 2.1.0 dengan SQL Server 2008 masih banyak pembaca yang bingung dan bertanya-tanya
"kenapa kok masih g konek ya padahal sudah bener semua settingan koneksi database ke SQL Servernya"
Nah jangankan pembaca yang budiman (bukan ibu Diman.... :D pis.. ), penulis yang bukan suaminya bu Diman pun juga heran, kok bisa tidak konek ke database SQL Server ya (pengalaman pas habis install ulang OS).
Nah untuk itu saya sebagai penulis (tentunya bukan suaminya bu Diman) membuat ulang langkah konfigurasi CI 2.x.x untuk bisa terkoneksi dengan SQL Server 2008/2012.

Sebagai info tambahan, saya menggunakan XAMPP 1.8.2 dengan PHP 5.4 dengan OS Windows 8 64bit.
Langkah-langkahnya sebagai berikut :
  1. Install SQL Server 2008 / 2012. Jangan lupa  install juga SQL Server Native Client, karena disinilah letak permasalahannya. Kadang kita meng-instal SQL Server, tapi tidak meng-install SQL Server Native Client nya sehingga aplikasi PHP kita tidak bisa terkoneksi dengan SQL Server. SQL Server Native Client bisa di download di microsoft.com, atau kalau bingung sudah saya siapkan dan dapat di download disini
  2. Download driver SQL Server untuk PHP, bisa di download disini.  Sebagai catatan cek versi PHP yang sedang dipakai, kemudian cocokkan dengan versi library PHP untuk SQL Server. Saya menggunakan Microsoft SQL Server Drivers versi 3.0
  3. Ekstrak file yang telah di download ke extensinya php (contoh klo di XAMPP ada di XAMPP/php/ext)
  4. Edit file php.ini nya, trus tambahkan code (untuk PHP 5.4) 
    
    
    extension=php_sqlsrv_54_ts.dll
    extension=php_pdo_sqlsrv_54_ts.dll
  5. Restart Apache pada XAMPP
  6. Selanjutnya setting database.php yang ada pada folder config Codeigniter
    $db['default']['hostname'] = 'ZAWA-PC'; // Nama PC dimana SQL Server diinstal
    atau
    $db['default']['hostname'] = 'localhost';
    $db['default']['username'] = 'sa';
    $db['default']['password'] = '123456';
    $db['default']['database'] = 'db_zawa';
    $db['default']['dbdriver'] = 'sqlsrv';
    $db['default']['dbprefix'] = '';
    $db['default']['pconnect'] = FALSE;
    $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']['swap_pre'] = '';
    $db['default']['autoinit'] = TRUE;
    $db['default']['stricton'] = FALSE;
    
  7. Apabila SQL Server di install di komputer lain yang masih dalam satu jaringan LAN, dan komputer kita HANYA ingin mengakses SQL Server dari komputer itu. Ubah konfigurasi untuk hostname-nya menjadi
    $db['default']['hostname'] = 'tcp:XXXX,YYYY'; 
    Dimana XXXX adalah nama PC yang diinstal SQL Server dan YYYY adalah Port yang digunakan SQL Server
    $db['default']['hostname'] = 'tcp:HYURA-PC,1433'; // 1433 Port default SQL Server
    atau
    $db['default']['hostname'] = 'tcp:192.168.0.212,1433'; // 1433 Port default SQL Server
    
Setelah selesai melakukan konfigurasi, jalankan aplikasi CI nya. Semoga berhasil dan semoga membantu.
Ada udang dibalik batu, udah duluuu...... ^_^

NB : Kalau menggunakan langkah ke 7 yang hanya mengakses SQL Server yang ada dikomputer komputer lain, JANGAN LUPA LAGI, tetap install SQL Server Native Client nya. Selain itu bisa jadi perlu diinstall juga Visual C++ Redistributable sesuai dengan arsitektur dari program PHP. Download VC11

Keyword : PHP CodeIgniter, Konfigurasi SQL Server 2008

Untuk menghargai HKI(Hak Kekayaan Intelektual), sumber referensi yang saya pakai dan saya pelajari akan ditampilkan.
Referensi     : http://codeigniter.com/,  msdn.microsoft.com
Author        : Moch. Zawaruddin Abdullah, www.zawaruddin.blogspot.com

15 komentar:

  1. apakah support juga jika menggunakan sql server 2005 mas ?

    BalasHapus
    Balasan
    1. saya blm pernah pakai sql server 2005, tp klo di cek di
      http://www.microsoft.com/en-us/download/details.aspx?id=20098
      Microsoft Drivers for PHP for SQL Server support sql server 2005

      Hapus
  2. Terima Kasih sharingnya mas, kalo boleh saya tanya untuk dapat menyimpan data array (multiple) dalam satu field tabel bagaimana ? untuk di Viewnya saya bikin seperti ini


    result_array() as $s){
    if($angkut==$s['angkut']){
    ?>







    sedangkan di Controllernya untuk Simpan saya bikin :
    $up['alat_angkut'] = $this->input->post('angkut[]');

    BalasHapus
    Balasan
    1. maksudnya yg lebig jelas gmn ya?
      klo kayak gini contoh array nya

      $arr = array('index1' => array('1' => 'management', '2' => 'account', '3' => 'technology'),
      'index2' => array('a' => 'siswa', 'b' => 'guru', 'c' => 'mahasiswa', 'd' => 'dosen'));

      bisa pake
      foreach($arr as $index => $value)

      Hapus
  3. Maaf mas, soalnya saya masih belajar. Maksudnya adalah saya ingin menyimpan isi data melalui multiple pilihan atau option dari tabel, misal saya ingin memilih jenis angkutan tidak hanya satu, tapi 3 pilihan dengan mencentangnya,lalu tersimpan dalam satu field dengan isi dari pilihan tersebut. ( dan saya menggunakan perintah select option multiple pada view nya). sedangkan di Controllernya untuk Simpan saya bikin dengan perintah
    $up['alat_angkut'] = $this->input->post('angkut[]');
    hasilnya datanya tersimpan tapi isinya 0 tidak sesuai dengan pilihan yang dicentang tadi. Mungkin mas Zawaruddin ada trik untuk menyimpan data multiple tersebut dalam satu filed tabel. Terima kasih sebelumnya ..

    BalasHapus
    Balasan
    1. coba nama selectnya sudah mengandung format array g?
      seperti

      - select name="angkut[]" multiple

      trus klo mau input ke db, $this->input->post('angkut[]') di foreach dulu

      Hapus
  4. mas aku mau nanya kok aku page not found yah udh frustasi nih. aku tuh username sama passwornya lupaa. ngaruh ga sih? mohon dibales ya mas

    BalasHapus
    Balasan
    1. yg d maksud lupa user dan password apa ya? apakah user dan password nya DB sql server?
      klo iya, ya ngaruh, aplikasi CI g bisa akses DB sql server

      Hapus
  5. mohamad komarudin17 Maret 2015 pukul 09.37

    Mas Zawaruddin, punya sample atau contoh multiple select dan dapat disimpan beberapa pilihan tersebut dalam satu field tabel dengan codeigneter. Tks

    BalasHapus
    Balasan
    1. maksudnya seperti ini kah?

      http://stackoverflow.com/questions/2407284/how-to-get-multiple-selected-values-of-select-box-in-php

      Hapus
  6. Mas Zawaruddin, saya sudah ikuti step by stepnya. tapi malah muncul :

    A Database Error Occurred
    Unable to connect to your database server using the provided settings.
    Filename: C:/xampp/htdocs/codeigniter/system/database/DB_driver.php
    Line Number: 436

    gmn cara mengatasinya y, sudah muterin google ga ktemu2
    sy pakai ci3

    BalasHapus
  7. Mas Zawaruddin, saya sudah ikuti step by stepnya, tetapi setelah di run di browser muncul :


    A Database Error Occurred
    Unable to connect to your database server using the provided settings.
    Filename: C:/xampp/htdocs/codeigniter/system/database/DB_driver.php
    Line Number: 436

    bagaimana cara mengatasinya y? saya pakai ci3

    BalasHapus
    Balasan
    1. pastikan config nya dah sesuai, dan juga pastikan sql server driver for php dan d load d php.ini dan apache dah d restart....

      Hapus
  8. Unable to connect to your database server using the provided settings.

    Filename: D:\xampp\htdocs\module\system\database\DB_driver.php

    Line Number: 124

    ini settingan db :
    $db['default']['hostname'] = 'tcp:COMP5-PC,1433';
    $db['default']['username'] = 'sa';
    $db['default']['password'] = '';
    $db['default']['database'] = 'dbROR';
    $db['default']['dbdriver'] = 'sqlsrv';
    $db['default']['dbprefix'] = '';
    $db['default']['pconnect'] = FALSE;

    Gan kalo ini knp ya.? sya pakai CI 3 dan konek SLQ SERVER ke Komputer lain
    makasih gan.

    BalasHapus
    Balasan
    1. databasenya emg g pakai password?
      coba cek sql server driver nya di php
      dan coba pakai alamat IP aja (bukan nama PC)

      Hapus