Skip to content

Posts tagged ‘CodeIgniter’

10
Dec

Bug Library ZIP di CodeIgniter

Kemarin saya buat modul untuk mengkompresi file2 diserver dan di download. Ceritanya sih, mau buat seperti kayak file manager, jadi select multiple file trus di zip dan otomatis di donlod. Sebelum kemana2, CI yang aku gunakan adalah versi 1.6.3.

Enaknya kalo pake CI nih, kalo untuk fitur semacam itu, proses yang aku lakukan cukup sampe di level class controller aja. jadi setelah selesai gak perlu load halaman htmlnya lagi. Mungkin kalo masih pake coding PHP biasa sih, begitu pilih file nya, trus di submit ke URL yang mroses, otomatis halamannya akan render lagi, sekaligus mroses inputan dari submit tadi.

Pada awalnya waktu men-zip multiple file, proses berhasil dengan sempurna. Dengan menggunakan metode

$this->zip->read_file($parentpath.$namafile);

File tersebut langsung dibaca isinya dan dimasukan dalam archive zip sementara, menunggu aksi terakhir apakah nanti di download

$this->zip->download($down_namafile);

apa disimpan

$this->zip->archive($zip_namafile);

Sekarang yang menjadi permasalahan adalah pada waktu item yang dipilih adalah sebuah direktori, memang benar fungsi ini menjalankan tugasnya membaca isi direktori lalu menjadikan dalam satu zip file.

Namun tugas itu dijalankan tidak cukup baik. Misal begini, ada direktori A dengan isi nama file FileA, FileB, dst. Maka nanti setelah dizip, nama file dalam zip berubah menjadi AFileA, AFileB, dst. Meskipun ukuran file nya sama dengan yang asli, tapi tetep saja tidak boleh begitu.

function read_dir($path)
{
  if ($fp = @opendir($path))
  {
    while (FALSE !== ($file = readdir($fp)))
    {
      if (@is_dir($path.$file) && substr($file, 0, 1) != '.')
      {
        $this->read_dir($path.$file."/");
      }
      elseif (substr($file, 0, 1) != ".")
      {
        if (FALSE !== ($data = file_get_contents($path.$file)))
        {
          $this->add_data(str_replace("\\", "/", $path).$file, $data);
        }
      }
    }
    return TRUE;
  }
}

coba diganti menjadi seperti ini

function read_dir($path)
{
  if ($fp = @opendir($path))
  {
    while (FALSE !== ($file = readdir($fp)))
    {
      if (@is_dir($path.$file) && substr($file, 0, 1) != '.')
      {
        $this->read_dir($path.$file."/");
      }
      elseif (substr($file, 0, 1) != ".")
      {
        if (FALSE !== ($data = file_get_contents($path."/".$file)))
        {
          $this->add_data(str_replace("\\", "/", $path)."/".$file, $data);
        }
      }
    }
    return TRUE;
  }
}

Lihat ada penambahan “/” di beberapa bagian function itu. Akhirnya fungsi berjalan seperti yang diharapkan. Pada CI 1.7.0 nampaknya bug ini belum diberesin, soalnya aku compare 1.7.0 dan 1.6.3, library zip.php tidak mengalami perubahan.

Semoga membantu.

9
Dec

Contoh simple bikin aplikasi dengan CodeIgniter.

Ada seorang teman menanyakan begini “masdeka…
bisa kasih contoh pake CI 1.7 dengan oracle XE, sampai sekarang ini saya masih susah pake CI dengan oracle Xe, saya ingin sekali itu bisa dijalankan.., tolong mas kirimkan saya satu contoh koneksi, kita pake saja database HR yang ada di oracle XE bagaimana menampilkan table employees. Tolong dikirimkan satu file model, satu file controler dan satu file view.

Read moreRead more

9
Dec

Patch CodeIgniter untuk Koneksi ke Oracle

Nah dibagian ini aku akan nyoba jelasin, gimana supaya driver oci8 di CI bisa lebih kompatibel dengan oracle. Apabila kamu tidak melakukan patch ini bisa dipastikan kamu akan mengalami kesusahan waktu query2 di oracle. Salah satunya, bila kamu dalam satu page (satu function class CI) melakukan 2 atau lebih query Oracle, maka yang dihasilkan adalah result query yang pertama kali dilakukan. Sungguh mengganggu kan?… Read moreRead more

8
Dec

Code Igniter Dengan Oracle

CodeIgniter (CI) merupakan framework PHP yang menggunakan konsep MVC (model view controller). Framework ini sangat fleksibel dan ukurannya lumayan kecil, namun peforma nya tidak kalah bila dibandingkan dengan framework yang lain untuk membuat aplikasi RAD. Seperti framework lainnya, CI juga mendukung koneksi untuk beberapa provider, salah satunya adalah Oracle. Read moreRead more