Tampilkan postingan dengan label Class. Tampilkan semua postingan
Tampilkan postingan dengan label Class. Tampilkan semua postingan

Minggu, 22 Juli 2012

Method Query Dengan CI

CI memberikan kebebasan kepada pengembang aplikasi yang menggunakan frameworknya. Pengembang yang masih senang menggunakan perintah SQL untuk melakukan query, CI menyediakan fungsi atau method query(), dengan parameter berupa string SQL.

Pengembang aplikasi harus menyiapkan perintah SQL terlebih dahulu, baru kemudian dimasukkan sebagai parameter dari method query().


<?php
..
$sqlstr="select * from namatabel ";
$qresult=$this->db->query($sqlstr);
var_dump($qresult);
..
?>

Perintah SQL yang dijadikan parameter untuk method query() dapat berupa perintah untuk membaca data dari database (select), untuk menambah data (insert), untuk memperbaiki data (update), atau untuk melakukan penghapusan (delete).


Hasil dari method query() dan ActiveRecord sama saja, berupa objek hasil query, apabila perintah SQL adalah select.

Selain perintah select, maka hasilnya adalah jumlah record yang terkena proses. Method untuk mendapatkan jumlah record yang terkena proses adalah affected_rows():


$nr=$this->db->affected_rows()

Kita dapat menggunakan nilai dari jumlah record yang terkena proses ini, untuk mengetahui apakah proses insert, update, atau delete berhasil atau tidaknya.


Jumat, 20 Juli 2012

Konfigurasi Database Dalam CI

Salah satu keunggulan dari framework PHP CI adalah dukungan framework untuk pembuatan aplikasi database. CI menyediakan dukungan kepada hampir database besar yang populer, dari MySQL, PostgreSQL, MS SQL Server, dan Oracle.

Pengembang bisa langsung berkonsentrasi pada pengembangan program. Mengapa? Karena CI telah membuatkan librari yang membungkus semua fungsi database yang ada dalam PHP menjadi seragam.

Konfigurasi
Data tentang database yang akan digunakan oleh program, cukup didefinisikan di dalam file konfigurasi database.php yang ada di dalam direktori application/config.

Berikut adalah contoh dari isi konfigurasi database.php

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "";
$db['default']['database'] = "database_name";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$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;

Pengembang cukup mengubah isi dari item hostname, username, password, database, dan dbdriver.
Jika kita menggunakan MySQL, maka konfigurasi di atas, cukup diubah hostname, username, password, dan databasenya saja.

Autoload
Agar koneksi database dibuka secara otomatis, maka berikutnya pengembang cukup mendefinisikan di dalam file konfigurasi autoload, pada item libraries dimasukkan database sebagai librari class yang harus diload secara otomatis.

Rabu, 18 Juli 2012

Konfigurasi Autoload

CI menganjurkan untuk melakukan pemuatan (load) suatu helper atau librari class dilakukan pada saat akan digunakan. Cara ini dilakukan agar tidak terlalu banyak baris program yang harus dimuat dan diinterpretasi oleh PHP di server.

Dalam kondisi tertentu beberapa helper dan librari class banyak digunakan atau hampir selalu digunakan dalam suatu program yang dibuat; seperti helper HTML, URL, dan FORM hampir selalu digunakan oleh program untuk menghasilkan suatu tampilan entri,

Jika kita dapat mengidentifikasi bahwa heper dan librari ini ada hampir pada setiap controller dan fungsi-fungsinya, model, atau viewnya, maka kita bisa membuat agar pemuatan dilakukan secara otomatis oleh CodeIgniter, yang dilakukan dengan menspesifikasikannya dalam file konfigurasi autoload.php.

File autoload.php berada di bawah direktori application/config.

Dalam file autoload.php ini, kita mendefinisikan pemuatan secara otomatis semua helper yang paling sering digunakan, librari class mana yang sering digunakan, dan bisa jadi file model mana saja yang digunakan.


Berikut adalah item-item yang dapat dimuat secara otomatis:
  • Semua librari class yang ada di bawah folder "libraries"
  • Semua file helper yang ada di bawah folder "helpers"
  • File config tambahan yang ditemukan di bawah folder "config"
  • File-file bahasa yang ada di bawah folder "system/language"
  • Model-model yang ditemukan dalam folder "models"


Dengan didefinisikan di dalam file autoload.php ini, maka pemrogram tidak perlu melakukan pemuatan lagi di dalam setiap controller, model, atau view yang akan menggunakannya.









Senin, 16 Juli 2012

Menampilkan Pesan Hasil Validasi Jika Ada Error

Proses validasi dengan menggunakan librari class form_validation, dengan menjalankan fungsi (method) run(), akan menghasilkan true atau false. Berdasarkan nilai ini kita dapat mengetahui apakah proses validasi telah berhasil atau tidak.

Tetapi tentu saja, kita tidak ingin sekedar tahu, apakah validasi berhasil atau tidak, tetapi juga ingin tahu input mana saja yang tidak sesuai dengan rule yang ditetapkan pada saat validasi. Hasil dari validasi yang dilakukan dengan menggunakan librari class form_validation dari CI, dapat diakses dengan menggunakan fungsi validation_errors().

<?php echo validation_errors(); ?>


Harus diletakkan pada awal dari form untuk mendapatkan input.
Jika pertama kali form ditampilkan, maka hasil dari validation_errors() adalah string kosong.


Jika form dipanggil setelah proses validasi, maka hasilnya bisa berupa pesan kesalahan, apabila ada nilai masukan yang tidak sesuai dengan rule validasinya.

CI menyediakan juga fungsi untuk mendapatkan hasil validasi untuk setiap elemen yang divalidasi, dengan menggunakan fungsi form_error('namaelemen');

Kita dapat memberikan perintah berikut:


<?php echo form_error('namaelemen'); ?>


Pada baris sebelum input elemen tersebut atau sesudahnya.


Selasa, 10 Juli 2012

Dasar Pagination Dengan CI

Pagination adalah istilah yang digunakan untuk menampilkan data dengan cara sebagian-sebagian, dengan menyajikan halaman demi halaman. Dalam aplikasi web, maka menampilkan sebagian data dilakukan menampilkan dalam satu halaman browser web; pagination mengacu pada penyajian data dalam halaman web.

Jika kita memiliki data yang banyak, maka data disajikan tidak langsung seluruhnya, tetapi sebagian-sebagian saja. Mengapa? Karena jika seluruhnya langsung ditampilkan, maka bisa jadi data hanya sebagian yang dapat ditampilkan oleh browser web, karena terputusnya hubungan dengan server.

Setiap server web memiliki waktu tanggap (response time) yang berbeda-beda untuk melayani suatu request dari penggunanya. Dengan keterbatasan waktu tanggap ini, maka jika server sedang sibuk, banyak melayani permintaan dari pengunjung, maka data akan dikirimkan sebagian-sebagian; pada saat waktu tanggap mencapai batas, maka koneksi untuk menanggapi permintaan akan diputus secara otomatis. Akibatnya? Hanya sebagian data saja yang akan terkirim.

Belum lagi jika koneksi sedang lambat, karena server web akan memberikan tanggapan atas permintaan akan dilakukan secara sebagian-sebagian. Setiap bagian setelah diterima akan dikonfirmasikan kepada server terlebih dahulu, sebelum kemudian server memberikan data berikutnya. Jika koneksi lambat, maka kita akan mendapatkan waktu yang tidak mencukupi, karena waktu tanggap yang disetel untuk server tersebut.

Untuk itu, untuk menjamin data dapat disajikan secara sebagian-sebagian, maka kita akan melakukan pembatasan akan data yang dikirimkan. Untuk mendapatkan data berikutnya, kita harus menyediakan link untuk menampilkannya. Link-link ini dapat disajikan dengan menggunakan nomor halaman. Nomor halaman akan disajikan sesuai dengan kelipatan dari jumlah data yang ditampilkan pada halaman tersebut.

CodeIgniter menyediakan librari class pagination, yang akan menampilkan link berupa nomor halaman untuk menampilkan data yang belum atau tidak ditampilkan.

Librari class ini akan secara otomatis menampilkan link untuk data berikutnya atau sebelumnya, dengan nomor halaman yang sedang ditampilkan dibedakan, dengan tidak dapat diklik; seperti ditunjukkan gambar berikut:

Contoh di atas menunjukkan pagination.

Kita dapat membuatnya dengan mudah, dengan melakukan pemuatan librari class terlebih dahulu, kemudian memasukkan parameter untuk menghitung jumlah halaman dan menampilkan link untuk menuju nomor halaman data yang belum ditampilkan.

Berikut adalah contoh untuk membuat link pagination seperti ditunjukkan di atas:

<?php
$this->load->library('pagination');

$config['base_url'] =site_url( 'controller/fungsi');
$config['total_rows'] = 200;
$config['per_page'] = 20; 

$this->pagination->initialize($config); 

echo $this->pagination->create_links();


?>

Setelah pemuatan librari class pagination, maka berikutnya kita mendefinisikan controller yang akan menampilkan data. Item total_rows diisi dengan jumlah data total, dari data yang akan ditampilkan. Item per_page diisi dengan jumlah data dalam setiap halamannya.

Item total_rows biasanya dihasilkan dari hasil counting data dari database, dengan menggunakan fungsi aggregat SQL count() , dari suatu query yang dilakukan untuk mendapatkan data dari database.

Librari class akan melakukan perhitungan akan ada berapa halaman data, untuk menampilkan link berupa nomor halaman, yang dilakukan pada saat fungsi initialize($config) dieksekusi. Hasil berupa link nomor halaman akan ditampilkan dengan menggunakan perintah echo untuk fungsi create_links().

Pemuatan librari class pagination dilakukan di dalam fungsi dari controller, hasil link bisa disimpan dalam variabel kemudian ditampilkan di dalam view.

Selasa, 03 Juli 2012

Pembacaan Data Dengan Librari Class Input

Librari class input adalah librari yang disediakan oleh CodeIgniter untuk memudahkan pembacaan data input yang dikirimkan oleh pengguna aplikasi web.

Librari class input akan secara otomatis dimuat oleh CodeIgniter, sehingga pengembang bisa langsung menggunakannya, tidak perlu melakukan pemuatan librari terlebih dahulu.

Sintaks pembacaan:

$varpenampung=$this->input->post("namaelemen"); 
namaelemen adalah nama elemen input yang dikirimkan form aplikasi dari browser web
$varpenampung adalah nama variabel yang digunakan untuk menampung data dari browser

Jika kita tidak menggunakan librari class input, maka kita harus menggunakan variabel server $_POST, dengan menggunakan key nama elemen input dari form browser web.

Librari class input dengan fungsi post() di atas, membantu pengembang aplikasi web untuk terhindar dari kesalahan yang disebabkan nama elemen input yang dimasukkan salah. Jika kita menggunakan $_POST langsung, maka kita akan mendapatkan pesan kesalahan, jika nama elemen input salah.

Pada pembahasan ini, kita menggunakan fungsi post(), karena secara default data yang akan dikirimkan dari browser web, jika kita menggunakan CodeIgniter sebagai backendnya, harus menggunakan method post pada atribut formnya.

Untuk menghindari kesalahan penggunaan $_POST untuk membaca data input yang dikirimkan oleh pengguna web, maka pengembang aplikasi harus melakukan pemeriksaan terlebih dahulu, apakah nama elemen input yang dimaksud ada atau tidak, jika tidak ada maka kita akan memberikan nilai default; seperti kode berikut:


$varpenampung=(isset($_POST["namaelemen"]))?$_POST["namaelemen"]:""; 
namaelemen adalah nama elemen input yang dikirimkan form aplikasi dari browser web
$varpenampung adalah nama variabel yang digunakan untuk menampung data dari browser
Pembacaan langsung dengan menggunakan $_POST harus dilakukan menggunakan assignmen yang di dalamnya ada operasi pemilihan ternary. Kita harus menggunakan fungsi isset() untuk memastikan terlebih dahulu, apakah item elemen $_POST ada atau tidak, jika ada, maka $varpenampung akan diisi dengan menggunakan $_POST["namaelemen"], jika tidak ada, maka yang diisikan adalah data kosong.

$this->input->post() akan secara otomatis melakukan proses pemeriksaan dan pemberian data default jika key untuk elemen $_POST tersebut tidak ada.

Setelah penghindaran kesalahan telah dilakukan oleh librari class input, maka pengembang aplikasi bisa lebih fokus untuk bagaimana memroses data selanjutnya.