Anda di halaman 1dari 22

Catatan CodeIgniter

by Garry Bernardy, employer #2 Computesta Corp

Pendahuluan (Read Me First)


Catatan ini merupakan suatu rangkuman atau handbook sederhana mengenai
CodeIgniter. Coding-coding yang disajikan ini tidak bisa kamu langsung copy
paste mentah-mentah. Soalnya hasilnya bakal gak bagus (tampilan di browser
pasti jelek~). Soalnya coding-coding ini lebih ditekankan supaya pembaca paham
cara pakai CodeIgniter.
Disini hanya memaparkan fungsi yang umum digunakan. Untuk kumpulan fungsi-
fungsi yang lengkap dapat melihat documentation resmi CodeIgniter(ada dalam
paket frameworknya).

Perubahan Struktur
Sesuai saran pengguna CodeIgniter, kebanyakan menyarankan untuk mengubah
struktur file. Oleh karenanya, saya juga ikut2an ubah struktur. Ok, struktur awal
CodeIgniter seperti ini

FolderProject
-System
Application
config
controllers
errors
helpers
hooks
viewers
models
dll
cache
codeigniter
database
fonts
helpers
dll
-index.php

Akan saya ubah sedikit dengan perubahan

FolderProject
-System
cache
codeigniter
database
fonts
helpers
dll
-Application
config
controllers
errors
helpers
hooks
viewers
models
dll
-Asset
img
css
script
-index.php

Kita akan lebih banyak berhubungan dengan folder Application.

Beberapa TIPS Sebelum Mulai


Supaya kita dapat menulis <? ?> saja atau <?= ?> maka sangat disarankan
untuk mengubah
$config['rewrite_short_tags'] = TRUE;

di file /application/config/config.php

Nantinya kita mungkin akan ketemu fungsi anchor() yang sama dengan <a
href=””> ataupun img() yang sama dengan <img src=””>. Supaya hasilnya sama
dengan yang diinginkan, maka kita akan tetap menggunakan yang versi
CodeIgniter, karena dengan demikian, link-nya lebih gampang ditulis, sebab
nantinya kalau pakai <a href=””> maka kita akan kewalahan dengan link yang
akan tidak biasa.

MVC Bagian I (Controller)


Dibuat di dalam folder /application/controllers
Struktur dasar:
<?php

class Mycontroller extends Controller{


function Mycontroller() //constructor
{
parent::Controller(); //memanggil fungsi construction parent
}

function index()
{
//isi halaman kalau langsung mengakses http://url/index.php/laohe/
}

function foo()
{
//isi halaman kalau panggil di http://url/index.php/laohe/foo
}

function bar($id)
{
//misalnya $id itu diisi “xxx” maka url diakses
http://url/index.php/laohe/bar/xxx
}

function _tersembunyi()
{
//fungsi yang tidak dapat diakses di url. Untuk dipakai bukan untuk
diakses
}
}
//NB:nama class harus kapital yang depan. Nama file disave sebagai
mycontroller.php di dalam folder controllers

MVC Bagian II (View)


Dibuat dalam folder /application/views
Dalam file ini tidak ada class. Isi filenya kebanyakan berupa tag html atau css
dengan sedikit php untuk tampil isi.
View perlu controller untuk menampilkannya. Tidak mungkin ada view yang
berdiri sendiri. (Kalo ada view yang berdiri sendiri pasti kamu utak atik aneh2.)

Cara pakai
ini Controller nya, dengan namafile :
/system/application/controllers/mycontroller.php
<?php
class Mycontroller extends Controller
{
function Mycontroller()
{
parent::Controller();
}
function index()
{
$this->load->view('myview1');/*nama view bebas sesuka kamu, yang
penting nama file sama*/
}
function contoh2()
{
$data['var1'] = 'Ini ini nilai variable 1';
$data['xxx'] = 24;
$this->load->view('myview2', $data); //ini tampil view yang lain
dengan kirim nilai.
}
}

Ini view-nya, dengan nama file /application/views/myview1.php


<html>
<body>
<h1>Welcome</h1>
Cuman tampil index doang
</body>
</html>

Yang ini view kedua dengan nama file /application/view/myview2.php


<html>
<body>
<?php
echo $var1;
echo $xxx;
?>
</body>
</html>

MVC Bagian III (Model)


Model itu class yang bertugas select, insert, update db dan operasi lainnya.
CodeIgniter tidak wajib menggunakan Model.
Struktur dasar :
<?php
class Mymodel extend Model
{
function Mymodel()
{
parent::Model();
}

function dapathasil()
{
//taruh fungsi supaya kalau mau akses db lewat model.
}
}
?>

Contoh MVC Keseluruhan


Kasus:
Tampilkan produk dengan menggunakan Model, View serta Controller. Nama tabel
yang akan diakses bernama msproduk. Sedangkan atribut-atribut pada tabel
tersebut berupa idkategori, nama, parent, isleaf, gambarfolder,
gambarbanner.

Jawab:

Pertama buat dahulu Model dengan nama productmodel.php


Codingnya:
<?php
class Productmodel extends Model
{
function Productmodel()
{
parent::Model();
}

function tampilproduk($idkategori='*')
{
$query = $this->db->query("SELECT idproduk, namaproduk, ukuran, jumlah,
idkategori, gambar1, gambar2, carapakai FROM msproduk WHERE
idkategori='$idkategori'");
return $query;
}
function tampilkategori($parent='*')
{
$query = $this->db->query("SELECT idkategori,nama, parent, isleaf,
gambarfolder, gambarbanner FROM mskategori WHERE parent='$parent'");
return $query;
}

?>

Lalu kita buat Controller di folder controllers dengan nama product.php


(/application/controllers/product.php)
Codingnya:
<?php
class Product extends Controller
{
function Product()
{
parent::Controller();
}
function index()
{
$this->load->model('Productmodel'); //buka model
$data['produk'] = $this->Productmodel->tampilproduk(); //panggil fungsi
model trus smpn var
$this->load->view('productview',$data); //memanggil view
}
}
?>

Lalu kita buat View di folder views dengan nama productview.php(Sebetulnya


pembuatan view biasanya berbarengan dengan pembuatan controller bukan
sesudah controller. Disini hanya contoh)
Buat file di /application/views/productview.php
Codingnya:
<html>
<title>Product</title>
<body>
<?php
foreach ($produk->result() as $row){
echo $row->idproduk."</td>";
echo $row->namaproduk;
echo $row->ukuran;
echo "<img src='".$row->gambar1."' alt='".$row-
>namaproduk."'/>";
echo "<br/>";
}
?>
</body>
</html>

Menangani Database

Sebelum mulai apa-apa kamu harus tulis ini dulu :


$this->load->database();

Kalau misalnya malas tiap kali mau utak-atik database harus tulis coding gitu
kamu bisa taruh di autoload (ada di /application/config/autoload.php) tambahkan
dibagian libraries jadi gini
$autoload['libraries'] = array('database');

Melakukan query
Untuk query ada 2 cara, secara objek atau array.
Versi objek:
$query = $this->db->query('SELECT name, title, email FROM my_table');

foreach ($query->result() as $row)

echo $row->title;

echo $row->name;

echo $row->email;
}

Disini diperhatikan bahwa dia menggunakan foreach. Jadi kita tidak pakai while
seperti pada mysql_query().

Versi array:
$query = $this->db->query('SELECT name, title, email FROM my_table');

foreach ($query->result_array() as $row)

echo $row['title'];

echo $row['name'];

echo $row['email'];

Yang membedakannya hanya pada yang satu $query->result() yang satu lagi
$query->result_array(). Jadi kalau array aksesnya dengan menggunakan cara
array.

Mengetes hasil query kosong atau tidak


Sebagai pengganti mysql_num_rows(). Kita menggunakan num_rows(). Contoh:
$query = $this->db->query("YOUR QUERY");

if ($query->num_rows() > 0)
//Di sini cek query kosong atau tidak
{

foreach ($query->result() as $row)

echo $row->title;

echo $row->name;

echo $row->body;
}

} else{
echo “Tidak ada hasil”;
}

Melakukan Insert, Update atau Delete


Sebenarnya juga menggunakan fungsi query(). Jadi menggunakan sintaks SQL.
Contohnya:
$sql = "INSERT INTO mytable (title, name)

VALUES ('$title', '$name') )";

$this->db->query($sql);

Active Record, fungsi tanpa mengandalkan SQL


Untuk melakukan fungsi select, update, insert, delete juga bisa menggunakan
ActiveRecord yang sudah disediakan CodeIgniter. Dengan fungsi ini, kita tidak
usah mengetik sintaks SQL, tetapi cukup panggil fungsi.

Contoh Active Record Query (Untuk query pakai fungsi get() ) :


$query = $this->db->get('table_name');

foreach ($query->result() as $row)

echo $row->title;

Contoh Active Record Insert (pakai fungsi insert() ):


$data = array(
'title' => $title,

'name' => $name,

'date' => $date

);

$this->db->insert('mytable', $data);

Makna dari fungsi diatas adalah “INSERT INTO mstable(title, name, date) VALUES
('$title', '$name', '$date') ”.

Contoh Active Record Update (pakai fungsi update() dipadukan where() ):


$data = array(

'title' => $title,

'name' => $name,

'date' => $date

);

$this->db->where('id', $id);

$this->db->update('mytable', $data);

Arti dari coding diatas adalah “UPDATE mytable SET title='$title', name='$name',
date='$date' WHERE id='$id' “.

Contoh Active Record Delete (pakai fungsi delete() ,mungkin perlu dipadukan
where() ):
$this->db->delete('mytable', array('id'=>$id));

Atau dengan cara yang satu lagi (dipadukan dengan where())


$this->db->where('id', $id);
$this->db->delete('mytable');

Makna dari sintaks di atas yakni hapus record yang id-nya bernilai $id.

Contoh Active Record Empty Table (dengan menggunakan empty_table() ):


$this->db->empty_table('mytable');

Sebetulnya sintaks ini sama saja dengan sintaks DELETE di SQL atau fungsi
delete() di AR(Active Record) tanpa where().

Contoh Active Record Truncate (dengan menggunakan truncate() ):


$this->db->truncate('mytable');

Mirip dengan empty table. Kecuali field yang auto-increment. Jika kita empty table
maka angka auto-increment tetap lanjut perhitungan sebelumnya. Jika truncate
maka variabel akan mulai dari awal lagi.

Membuat Form
Mengapa menggunakan helper dan tidak langsung coding HTML saja langsung?
Alasannya kalau kita pakai yang sudah disediakan dia nantinya akan dengan
mudah dapat menambah atribut dan hidden field. Selain itu tingkat portabiliti
code lebih tinggi, misalnya ketika URL berubah. Alasan lainnya, elemen-elemen ini
sudah divalidasi html nya. Jadi kalau misalnya value text adalah “</table>” maka
tidak akan merusak susunan form, karena akan diganti dengan karakter aman.

Untuk menggunakan Form Helper kita harus load terlebih dahulu


$this->load->helper('form');

Langkah awal adalah membuat kepala Form


echo form_open('email/send');

Makna dari sintaks itu adalah nantinya akan muncul tag HTML demikian
<form method="post" action="http:/example.com/index.php/email/send" />

Bisa juga kita membuat akhir dari Form dengan menggunakan echo
echo form_close();
tetapi sebetulnya juga bisa langsung mengetik tag html
</form>

Keduanya adalah sama

Menambah attribut pada kepala form


$tambahan = array('id'=>'formlogin','name'=>'formlogin');
echo form_open('dologin', $tambahan);

Makna dari sintaks ini adalah


<form method='post' id='formlogin' name='formlogin' action='dologin' />

Membuat hidden field


Untuk membuat hidden field, kita bisa menentukan apa saja isinya kemudian
taruh di parameter ketiga dari form_open().
$tersembunyi = ('hdnnama'=>'joe', 'hdnnumber'=>'123');
echo form_open('email/send', '', $tersembunyi);

Artinya:
<form method=”post” action=”http://example.com/index.php/email/send”/>
<input type=”hidden” name=”hdnnama” value=”joe”/>
<input type=”hidden” name=”hdnnumber” value=”123” />

List persamaan Form dengan form helper CodeIgniter

echo form_input('txtnama','john'); <input type='text' name='txtnama'


value='john' />
echo form_password('txtpass', 's3cr3t'); <input type='password' name='txtpass'
value='s3cr3t'/>
echo form_upload('filimage'); <input type=”file” name=”filimage” />
echo form_textarea('txtalamat','jln <textarea name='txtalamat'>jln
raya'); raya</textarea>
$isi = <option name='cmbsize'>
array('b'=>'Big','m'=>'Medium','s=>'S <select value='b'>Big</select>
mile'); <select value='m'>Medium</select>
echo form_dropdown('cmbsize', $isi, <select value='s'>Small</select>
'm'); </option>
echo form_checkbox(“newsletter”, <input type=”checkbox”
“accept”, TRUE); name=”newsletter” value=”accepted”
checked=”checked”/>
echo form_radio('radsex', 'p', true); <input type=”radio” name=”radsex”
value=”p” checked=”checked” />
echo form_submit('mysubmit','Kirim'); <input type='submit' name='mysubmit'
value='Kirim' />

Satu hal yang diingat, kalau menggunakan form_upload() berarti kita


menggunakan input type='file', yang artinya form harus di set nilai
enctype="multipart/form-data". Tinggal pakai form_open_multipart() dengan
cara :
echo form_open_multipart('/send/email');

Untuk redirect halaman


Ada 2 cara untuk redirect di dalam CodeIgniter

Cara pertama kita menggunakan Output Class


$this->output->set_header(“Location:login.php”);

Output Class sudah diinisialisasi secara otomatis, jadi tidak usah di load() lagi

Cara kedua kita menggunakan URL Helper


$this->load->helper('url');
redirect('/login');

Satu hal yang perlu diingat adalah kita men-direct URI, jadi JANGAN tulis link
lengkap. Kalau ingin mendapat kontrol lebih, lebih baik menggunakan yang versi
Output Class

Validasi Form
Biar lebih gampang harus kasih contoh keseluruhan. Jadi disini ada kasus dimana
kita akan validasi form registrasi. User akan memasukkan data ke form, jika
semua syarat terpenuhi maka akan keluar informasi yang diinput user, kalau
salah maka akan tampilkan form dengan pesan kesalahan.
Kita perlu controller dan view. Untuk controller codingnya demikian:
<?php
class Register extends Controller
{
function Register()
{
parent::Controller();
}

function index()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('nama','Nama', 'trim|required');
$this->form_validation->set_rules('umur','Umur', 'trim|required|
is_natural');
$this->form_validation->set_rules('alamat', 'trim|Alamat|
required');
$this->form_validation->set_rules('sex', 'Sex', 'required');
$this->form_validation->set_rules('email','Email', 'trim|required|
valid_email');

if ($this->form_validation->run()==false){
$this->load->view('feedbackview');
}else{
echo "Sukses <br/>";
$nama = $this->input->post('nama');
$umur = $this->input->post('umur');
$alamat = $this->input->post('alamat');
$jeniskelamin = $this->input->post('sex');
echo $nama."<br/>". $umur. "<br/>".$alamat. "<br/>" .
$jeniskelamin;
}
}
}
?>

Penjelasan:
$this->load->library(‘form_validation’) untuk meload Class Form Validation
supaya dapat mengggunakan fungsi-fungsi validasi.

$this->form_validation->run() untuk melakukan validasi. Jika misalnya kita tidak


melakukan set_rules() maka hasilnya akan selalu false.

$this->form_validation->set_rules(‘param1’,’param2’, ‘param3’); untuk


menentukan peraturan yang harus divalidasikan ketika run() dijalankan.

Keterangan set_rules() : Param1 berisi nama objek yang ingin divalidasi.


Param2 berisi nama yang akan ditampilkan pesan error.
Param3 berisi daftar-daftar aturan validasi.
Daftar-daftar aturan validasi yang sering dipakai:
required : Harus diisi
matches[x] : Harus sesuai dengan x, x harus diisi
min_length[x] : Panjang minimal, x harus diisi angka
max_length[x] : Panjang maksimum, x harus diisi angka
exact_length[x] : Panjang pasti, x harus diisi angka
alpha : Harus huruf alphabet
alpha_numeric : Harus huruf alphabet atau angka
alpha_numeric : Harus alpha-numeric ditambah strip dan garis bawah
numeric : Harus berupa karakter angka
integer : Harus berupa angka integer
is_natural : Harus berupa angka natural (0, 1, 2, 3, …)
is_natural_no_zero : Harus berupa angka natural tanpa nol (1, 2, 3…)
valid_email : Harus berbentuk email
valid_emails : Harus berupa email-email yang dipisah koma
valid_ip : Harus berbentuk IP
valid_base64 : Harus berupa a-z, A-Z,0-9, +, -

Kemudian membuat view yang berisi :


<?php
$this->load->helper('form');
echo validation_errors();
echo form_open_multipart('/feedback'); //pakai multipart karena ada upload file
?>
<table>
<tr><td>Nama</td><td><?php echo
form_input('nama',set_value('nama'));?></td></tr>
<tr><td>Umur</td><td><?php echo
form_input('umur',set_value('umur'));?></td></tr>
<tr><td>Alamat</td><td><?php echo
form_textarea('alamat',set_value('alamat'));?></td></tr>
<tr>
<td>Jenis Kelamin</td>
<td>
<label><?php echo form_radio('sex','male',true); ?> Laki-laki</label>
<label><?php echo form_radio('sex','female'); ?> Perempuan</label>
</td>
</tr>
<tr>
<td>Kota</td>
<td>
<?php
$pilihan = array('Jakarta'=>'Jakarta', 'Medan'=>'Medan',
'Pontianak'=>'Pontianak', 'Batam'=>'Batam');
echo form_dropdown('kota',$pilihan, set_value('kota'));
?>
</td>
</tr>
<tr>
<td>File Gambar</td>
<td><?php echo form_upload('gambar',set_value('gambar'));?></td>
</tr>
<tr>
<td>Email</td>
<td><?php echo form_input('email',set_value('email')); ?>
</tr>
<tr>
<td></td><td><?php echo form_submit('submit','Kirim');?></td>
</tr>
</table>
<?php echo form_close(); ?>

Penjelasan:
echo validation_errors(); akan menampilkan pesan error jika validasi salah. Karena
saya taruh sintaksnya diatas form, maka nantinya pesan error akan muncul disitu.
Jadi peletakan ini tergantung sesuai posisi yang diinginkan.

set_value('x') :Untuk mengisi objek itu lagi jika ternyata masih belum valid. Kalau
dulunya kami menggunakan Cookie dan ketik panjang2, sekarang tidak usah.
Biasanya set_value() ditaruh di parameter kedua, karena parameter tersebut
memang untuk value/nilai

Mengubah pesan error


Pesannya biasanya berupa bahasa Inggris. Untuk mengubah isi pesan error maka
ganti-ganti isi file di system/language/english/form_validation_lang.php

Template
Kita dapat menggunakan template di CodeIgniter, hanya sayang saja tidak
tersedia built-in. Tapi jangan sedih, karena saya sudah menemukan library buatan
orang yang sangat sederhana untuk membuat template. Download di
http://maestric.com/wiki/lib/exe/fetch.php?id=&cache=cache&media=php:ci_tem
plate_library3.zip
Kemudian taruh file Template.php yang ada dalam zip itu kedalam
/system/libraries/

Cara Penggunaan:
Kalau biasanya untuk buka view kita menggunakan
$this->load->view('about', $data);

Maka jika sudah menggunakan template kita tinggal :


$this->template->load('templateview', 'about', $data);
Dimana templateview ini juga terletak di folder /application/views.

Hal yang harus diperhatikan adalah didalam template (dalam contoh ini berarti
file templateview.php) harus ada $contents (gak boleh nama lain) misalnya
<html>
<title>Halaman Utama</title>
<body>
<?=$contents ?>
</body>
</html>

Kalau misalnya ada lebih dari satu yang ingin dikirim kamu bisa buat variabel lain
selain $contents. Yang jelas $contents harus ada. Misalnya dibawah ini adalah
contoh file templateview.php
<html>
<title> <?= $judul ?></title>
<body>
<?= contents ?>
</body>
</html>

Maka di controller kita tinggal mengetik begini (contoh yang sama dengan atas):
$this->template->set('title', 'Halaman Utama');
$this->template->load('templateview', 'about',$data);

Menggunakan Session
Untuk memanfaatkan session harus load dahulu
$this->load->library('session');

Untuk set nilai


$this->session->set_userdata(‘item’, ‘nilai’);

Kalau mau ambil nilai


$this->session->userdata(‘item’);
Untuk hapus
$this->session->unset_userdata(‘item’);

Hancurkan session
$this->session->sess_destroy();

Menggunakan Cookie
Untuk memanfaatkan cookie harus load dahulu
$this->load->helper(‘cookie’);

Untuk set cookie


set_cookie($nama, $nilai, $kadaluarsa, $domain, $path, $prefix);
Keterangan : - $nama merupakan nama cookie
$nilai merupakan nilai yang diingin simpan
$kadaluarsa ditentukan detik lamanya hidup. Gak usah ditambahin
time() lagi. Cukup tentukan berapa lama dia bertahan.
$domain perlu kalo cookie nya mau simpan dalam jangkauan antar
domain
$path biasanya tidak perlu diisi karena fungsi set path root
$prefix hanya dipakai kalau kamu takut terjadi tabrakan nama
dengan cookie lain.

Untuk ambil nilai cookie


get_cookie($nama);

Delete cookie
delete_cookie($nama);

Paging
Untuk load menggunakan:
$this->load->library('pagination');

Contoh bentuk dasar setting:


$config['base_url'] = 'http://example.com/index.php/test/page/';
$config['total_rows'] = '200';
$config['per_page'] = '20';
$this->pagination->initialize($config);
echo $this->pagination->create_link();

Contoh nyata:
Misalnya kita ingin menampilkan daftar produk. Sekedar diketahui jumlah produk
itu adalah 23 buah. Kita ingin setiap halaman hanya bisa menampilkan 5 produk.

Maka di controller kita harus setting. Controller ini bernama Main dengan alamat
/application/controllers/main.php
<?php

class Main extends Controller {

function Main()
{
parent::Controller();
}

function produk($id=1)
{
$this->load->model('Productmodel');
$this->load->library('pagination');

//pagination
$config['base_url']= 'index.php/main/produk/';
$config['total_rows'] = $this->Productmodel->maksproduk();
$config['per_page'] =5;
$this->pagination->initialize($config);
$data['paging']= $this->pagination->create_links();

//tampilproduk
$data['produk'] = $this->Productmodel->tampilproduk("limit $id,5");
/*intinya select * from msproduk limit $id, 5(lebih jelas lihat di model
nantinya)*/

//meload view
$this->load->view('productview',$data);
}

function index()
{
}
}
Di view kita tinggal menampilkan saja
<?php
foreach($produk->result() as $row){
echo $row->idproduk."</td>";
echo $row->namaproduk;
echo $row->ukuran;
echo "<br/>";
}

echo $paging;
?>

Kalau ingin lebih mengerti model yang dipakai silahkan lihat ini:
<?php

class Productmodel extends Model


{
function Productmodel()
{
parent::Model();
}

function maksproduk()
{
$query = $this->db->query("SELECT idproduk FROM msproduk");
return $query->num_rows();
}

function tampilproduk($additional='',$idkategori='-1')
{
if ($idkategori==-1){
$query = $this->db->query("SELECT idproduk, namaproduk, ukuran,
jumlah, idkategori, gambar1, gambar2, carapakai FROM msproduk
".$additional);
}else{
$query = $this->db->query("SELECT idproduk, namaproduk, ukuran,
jumlah, idkategori, gambar1, gambar2, carapakai FROM msproduk WHERE
idkategori like '$idkategori' ".$additional);
}
return $query;
}
}

?>

Upload file
Untuk dapat menggunakannya harus load:
$this->load->library('upload');

Dibawah ini adalah contoh untuk upload gambar sederhana

Di controller kita beri nama doupload.php di alamat


/applications/controllers/doupload.php:
<?php
class Doupload extends Controller{
function Doupload()
{
parent::Controller();
}

function index()
{
$config['upload_path'] = './upload/';
$config['max_size'] = '100';
$config['allowed_types'] = 'gif|jpeg|png';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->upload->initialize('upload');
$this->upload->do_upload();
}

Kemudian di bagian view kita buat form untuk upload gambar dengan alamat
/applications/views/upload.php
echo form_open_multipart('/feedback'); //harus form_open_multipart() soalnya
upload file
?>
<table>
<tr>
<td>File Gambar</td>
<td><?php echo form_upload('userfile');?></td>
</tr>

<tr>
<td></td><td><?php echo form_submit('submit','Kirim');?></td>
</tr>
</table>
<?php echo form_close(); ?>

Satu hal yang harus diingat, karena di controller tadi hanya ditulis do_upload()
tanpa isi parameter maka nama form_upload() harus "userfile". Kalau selain
"userfile" maka ketika do_upload() harus diisi parameter nama form_upload()
nya

Pentutupan
Sekian diktat mengenai CodeIgniter. Jika ingin melihat lebih detail apa saja yang
dapat dipakai di CodeIgniter silhakan lihat dibagian User Guide CodeIgniter karena
Guide ini sudah sangat lengkap (bahkan dipuji sebagai salah satu framework PHP
yang paling bagus dokumentasinya).