Level: ABOVE AVERAGE
Karena banyak komentar dari temen2 tentang tutorial ini ada error, maka saya update postingan ini dengan menambahkan sedikit catatan ini. Perlu diperhatikan bahwa ini adalah tutorial CI untuk versi 1.7.x, bukan CI versi 2.x.. karena banyak perbedaan yang ada pada CI sekarang, maka mungkin nanti saya akan buat tutorial CI untuk versi 2.x.. Salah satu perbedaannya yaitu folder ‘applications’ yang ada di luar folder ‘system’ (CI 2.0), sedangkan CI versi 1.7.x masih di dalam folder system.. Jadi ketika mengalami error, silakan download versi 1.7.x (misal: 1.7.2/1.7.3).
Oh iya, sekarang saya sudah buat situs tutorial pemrograman berbahasa Indonesia lengkap. Saya akan selalu mengupdate tutorial-tutorial saya di situs tersebut. Penasaran? jika kamu ingin semakin jago coding, kamu harus kunjungi situs Jagocoding.com
![]()
Akhirnya aku bisa update blog ini lagi, hehe… mungkin temen2 udah ga sabar untuk menanti tutorial2 komputer yang baru di blog ini, khususnya tutorial Codeigniter.
Untuk kali ini, Cheyuz akan membuat tutorial Codeigniter untuk membuat Multiple Input Form. Apa itu Multiple Input Form? Multiple Input Form adalah suatu bentuk form di mana kita akan menginputkan banyak data ke dalam database melalui form secara sekaligus. Jadi kita tidak menginputkan data satu persatu.
Form Input Mahasiswa
| NIM: | |
| Nama: | |
| Alamat: |
Jika kita memakai cara yang di atas, maka kita harus menginputkan mahasiswa satu persatu. Bayangkan gimana kalo kita ingin menginputkan 50 data? Tentu kita harus mengisi form sebanyak 50 kali bukan?
Coba lihat form berikut ini:
Form Input Mahasiswa
| NIM | Nama | Alamat |
Coba Anda lihat, apa bedanya cara pertama dengan cara kedua? keliatan kan? Nah, jadi bedanya apabila kita memakai cara kedua, kita dapat menginput beberapa siswa sekaligus.
Di sini kita akan membuat 3 bagian modul, yaitu:
- Form untuk mengisi berapa data yang akan dimasukkan
- Form untuk pengisian form multiple
- Daftar data yang telah dimasukkan
Diasumsikan base_url() untuk tutorial ini adalah
http://localhost/webkudan index.php telah dihilangkan..
tutorial untuk menghilangkan index.php ada di sini
Pertama2 buat dulu database sebagai berikut:
CREATE TABLE IF NOT EXISTS mahasiswa ( id int(5) NOT NULL AUTO_INCREMENT, `nim` varchar(20) NOT NULL, `nama` varchar(100) NOT NULL, `alamat` text NOT NULL, PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
Jangan lupa cek koneksi ke database apakah sudah benar atau belum..
konfigurasi untuk koneksi database ada di /system/application/config/database.php.
Buatlah sebuah controller data_mahasiswa.php (atau Anda bisa melanjutkan tutorial dari Tutorial Dasar Part I untuk membuat controller data_mahasiswa.php dan melanjutkannya).
Di controller tersebut, tambahkan function untuk membuat tampilan multiple input form:
<?php class Data_mahasiswa extends Controller { ... function add_multiple() { $this->load->view('add_multiple'); } } ?>
Setelah kamu bikin controller di atas, kamu tinggal bikin ‘view’ untuk tampilan formnya, dengan cara membuat file add_multiple.php di folder /system/application/view
Isikan code HTML berikut di file tersebut:
<h2>Multiple Form Input Mahasiswa</h2>
<form action="" method="post">
Banyak mahasiswa yang ingin dimasukkan:
<input name="banyak_data" size="3" /> orang<br />
<input type="submit" value="Lanjut" />
</form>Maka hasilnya seperti berikut:
Multiple Form Input Mahasiswa
Kemudian tambahkan code berikut untuk function add_multiple() file controller data_mahasiswa.php tadi, menjadi seperti berikut:
<?php class Data_mahasiswa extends Controller { ... //ADD MULTIPLE function add_multiple() { if($_POST==NULL) { $this->load->view('add_multiple'); }else{ redirect('data_mahasiswa/add_multiple_post/'.$_POST['banyak_data']); } } } ?>
Maksud dari function di atas adalah meload view add_multiple.php yang berisi halaman input banyak data mahasiswa yang dimasukkan.. kemudian ketika disubmit (POST) maka akan di-redirect/alihkan ke function add_multiple_post() dengan parameter banyaknya data yg dimasukkan ($_POST['banyak_data']) yang akan kita buat nanti… yaitu halaman munculnya multiple form.
Tambahkan function berikut di bawah function add_multiple():
class Data_mahasiswa extends Controller { ... function add_multiple_post($banyak_data=0) { $data['banyak_data'] = $banyak_data; $this->load->view('add_multiple_form',$data); } }
Kemudian, buatlah tampilan multiple form input seperti gambar table di atas.
Berikut ini adalah kode HTML dari add_multiple_form.php, simpan di /system/application/views:
<h2>Multiple Form Input Mahasiswa</h2>
<form action="" method="post">
<table>
<tr>
<td>NIM</td>
<td>Nama</td>
<td>Alamat</td>
</tr>
<?php for($i=1;$i<=$banyak_data;$i++): ?>
<tr>
<td><input name="data[<?php echo $i ?>][nim]" /></td>
<td><input name="data[<?php echo $i ?>][nama]" /></td>
<td><input name="data[<?php echo $i ?>][alamat]" /></td>
</tr>
<?php endfor ?>
</table>
<input type="submit" value="simpan" />
</form>http://localhost/webku/data_mahasiswa/add_multiple_post/3
Multiple Form Input Mahasiswa
http://localhost/webku/data_mahasiswa/add_multiple_post/5
Multiple Form Input Mahasiswa
Kemudian, tambahkan ‘if’ dan ‘foreach’ di function add_multiple_post tadi, fungsinya adalah untuk mengetahui apakah form udah disubmit atau belum… jadi kode PHP lengkapnya sbb:
<?php class Data_mahasiswa extends Controller { ... function add_multiple_post($banyak_data=0) { if($_POST==NULL) { $data['banyak_data'] = $banyak_data; $this->load->view('add_multiple_form',$data); }else { foreach($_POST['data'] as $d){ $this->db->insert('mahasiswa',$d); } redirect('data_mahasiswa/lihat_data'); } } } ?>
OK, aku jelasin ya…
untuk function add_multiple_post():
- Data dicek dulu apakah sudah disubmit ato belum ($_POST==NULL), kalo belum, load view
add_multiple_form.phpdengan variable $banyak_data yang diambil dari parameter berdasarkan data yg dimasukkan sebelumnya (di functionadd_multiple(), yaitu $_POST['banyak_data']) - Kalo datanya udah disubmit, maka lakukan insert data yang berulang sebanyak elemen dari $_POST['data'] (berdasarkan $banyak_data) ke dalam table ‘mahasiswa’ dengan data dari $_POST['data'] (input-an dari multiple form)
- Kemudian redirect/alihkan ke function
lihat_datauntuk menampilkan seluruh data mahasiswa yang akan kita buat setelah ini.
Nah, sekarang kita tinggal bikin daftar data ‘mahasiswa’ yang sudah dimasukkan.. Caranya, buat file list_mahasiswa.php di /system/application/views/ dengan isi sebagai berikut:
list_mahasiswa.php:
<h2>Daftar Mahasiswa</h2>
<table>
<tr>
<th>No</th>
<th>NIM</th>
<th>Nama</th>
<th>Alamat</th>
</tr>
<?php $i = 0 ?>
<?php foreach($mahasiswa as $m): ?>
<tr>
<td><?php echo $i++ ?></td>
<td><?php echo $m->nim ?></td>
<td><?php echo $m->nama ?></td>
<td><?php echo $m->alamat ?></td>
</tr>
<?php endforeach ?>
</table>
<?php echo anchor('data_mahasiswa/add_multiple','Tambah Data') ?>Lalu buat function-nya di Controller data_mahasiswa.php:
<?php class Data_mahasiswa extends Controller { ... function lihat_data(){ $data['mahasiswa'] = $this->db->get('mahasiswa')->result(); $this->load->view('list_mahasiswa',$data); } } ?>
Selesai.
Berikut ini adalah source code lengkapnya:
/system/application/controllers/data_mahasiswa.php
class Data_mahasiswa extends Controller { //... //... function2 yg ada di tutorial sebelumnya //... //ADD MULTIPLE function add_multiple() { if($_POST==NULL) { $this->load->view('add_multiple'); }else { redirect('data_mahasiswa/add_multiple_post/'.$_POST['banyak_data']); } } function add_multiple_post($banyak_data=0) { if($_POST==NULL) { $data['banyak_data'] = $banyak_data; $this->load->view('add_multiple_form',$data); }else { foreach($_POST['data'] as $d){ $this->db->insert('mahasiswa',$d); } redirect('data_mahasiswa/lihat_data'); } } function lihat_data(){ $data['mahasiswa'] = $this->db->get('mahasiswa')->result(); $this->load->view('list_mahasiswa',$data); } }
/system/application/views/add_multiple.php
<h2>Multiple Form Input Mahasiswa</h2>
<form action="" method="post">
Banyak mahasiswa yang ingin dimasukkan:
<input name="banyak_data" size="3" /> orang<br />
<input type="submit" value="Lanjut" />
</form>/system/application/views/add_multiple_form.php
<h2>Multiple Form Input Mahasiswa</h2>
<form action="" method="post">
<table>
<tr>
<td>No</td>
<td>NIM</td>
<td>Nama</td>
<td>Alamat</td>
</tr>
<?php for($i=1;$i<=$banyak_data;$i++): ?>
<tr>
<td><?php echo $i ?></td>
<td><input name="data[<?php echo $i ?>][nim]" /></td>
<td><input name="data[<?php echo $i ?>][nama]" /></td>
<td><input name="data[<?php echo $i ?>][alamat]" /></td>
</tr>
<?php endfor ?>
</table>
<input type="submit" value="simpan" />
</form>/system/application/views/list_mahasiswa.php
<h2>Daftar Mahasiswa</h2>
<table>
<tr>
<th>No</th>
<th>NIM</th>
<th>Nama</th>
<th>Alamat</th>
</tr>
<?php $i = 0 ?>
<?php foreach($mahasiswa as $m): ?>
<tr>
<td><?php echo $i++ ?></td>
<td><?php echo $m->nim ?></td>
<td><?php echo $m->nama ?></td>
<td><?php echo $m->alamat ?></td>
</tr>
<?php endforeach ?>
</table>
<?php echo anchor('data_mahasiswa/add_multiple','Tambah Data') ?>Untuk contoh file nya klik link Download yang ada di bawah ini..










keren..
hmm untuk nambah rownya ada alternatif lain kayak jquery add-row. cekidot deh
salam kenal ^^
@neng ucrit: bisa… tapi itu bukan buat bahan ajaran CI…. paling ada nanti di tutorial AJAX… jadi ketika ng’add itu langsung rownya nambah tanpa refresh (gitu bukan?) kayak FB klo qta ngpost di wall…
nice inpoh gan,
yoi klo d jquery ckup tambah script addClass doang ama innernya
dan yg menampung smua nilai itu brupa variabel
*nb:kpan nih beralih ke Zend,qta blajar sma2. salam kenal
bagus artikelnya-salut !
sekedar ide untuk lebih meluaskan pembagian ilmu dibuatkan tutorial lengkapnya, bisa ke ilmukomputer.com yang sudah cukup populer.
*tambahan-site ini kok masih pake wp sih, kenapa tidak diterapkan sekalian ilmunya di site ini ?
–
(\(\
( -.-)
o_(“)(“) Don’t mess with the bunny!
modelnya mana gan
hehe iya gan,, ane ga pake model soalnya tutorialnya nambah panjang harus bikin model lagi… yg function insert() nya harusnya emank sih di model… tp gpp lah ni buat contoh aja.. kreatifitas temen2 aja taro semua function databasenya di model… hehe
nice info…sangat membantu..
terima kasih infonya semoga bermanfaat
@indra: thankz
smoga brmanfaat..
@yudhig92: yup, bener gan.. heu2 sy mah blm prnah make zend unk…
@punk: saran agan boleh juga tuh… iya WP gan, soalnya kan ini mah cuman blog.. situs ane yg asli bukan wp, tapi pake fw codeigniter: http://cheyuz.com
gan kok halamannya gak bisa di copi?
@dhaniel: bisa gan, klik kanan, copy
cep… mo tanya cep…
1. misalnya gw ada dropdown yg isinya (jeruk,apel,mangga) gw ambil dr database table “a”(jeruk,apel,mangga) kemudian gw masukin ke table “b” pake action submit … nah itu kan harus dijadiin array dlu ya? tp hasilnya di table”b” ya cuma kluar angka nya aja (1 ato 2 ato 3) itu kenapa ya cep ?
2. klo misalnya gw pake dropdown (pertanyaan 1) . contohnya gini :
Suka buah : [---dropdown---]1.apel,2.jeruk,3.mangga[---dropdown]
gw udah inputin apel trus gw mau tambah lg gw suka jeruk. jd kyk multiple gitu tp masih untuk satu field… jadi misalnya data si Amir=klo udah pilih dropdown apel trus bisa tambah dropdown jeruk… gimana ya cep…
Sory klo bahasa nya amburadul cep …gw juga bingung ngomong nya gimana…hahahahaaa…makasih ya cep
apik gan,,,mau ta coba.thx
@dhim: selamat belajar gan
@steflo:
jawaban 1: yup, jadiin array, klo keluar angka mungkin salah fetch nya,, itu yg keluar indexnya… itu kan hasilnya array 2 dimensi… pake foreach..
jawab 2: wah itu teknis banget gan… caranya panjang,, pake ajax bisa..
gan cheyuz, nambah lagi dunk tutorialnya,
pake ajax, javascript, jquery, css…gimana tuh caranya gan?
keep posting gan, ane nyimak n ane bukmak dlu gan..
thx
@mahen: nanti insya Allah saya akan buat web khusus tutorial Web Development gan, bntar lagi dirilis, tunggu tanggal mainnya gan
kalau untuk form input kan :
<input id="nama" type="text" name="data[][nama]” value=”"/>
kalau untuk form dropdown nya yg punya CI :
gimana cep ?
form_dropdown(‘nama_mkul’.$i, $matkul)
duh ngga ga kluar code form dropdownnya hehee…
@stef: yg dropdown masih salah gan… harusnya: echo form_dropdown(‘shirts’, $matkul, ‘nama_mata_kuliah’); misalnya gitu… parameter ke-1: nama combobox, yg parameter ke-2 itu nama array (hasil seleksi) yg parameter 3 baru value nya..
oke ntar saya coba dlu..makasi
owh gini maksud gw klo di form inputkan bisa nulisnya
name=”data[][nim]”
kalau form_dropdown (‘nama’, …..)
cara penulisan namanya name=”data[][nama]” itu gimana ?
hehehe thx ya
aduh keblok sama WP nya ya code PHP …
namanya kyk penulisan contoh multiple diatas itu cep klo dimasukan kedalam form_dropdown penulisannya gimana …gitu maksudnya
wah iya keblok gan.. bentar dibenerin dulu…
@stef: sori gan, ralat nih, salah ngetik, sekalian dibenerin yg keblok nya:
[td]< ?php echo form_dropdown(‘data['.$i.'][mata_kuliah]’, $matkul, 'matematika'); ?>[/td]
gitu yg bener… [ ] diganti <>
sip makasih cep …. sori ngerepotin
thx a lot ya…ditunggu tips+artikel codeigniter lainnya
@stef: ok gan sama2… sip, always updated..
modelnya ga dimasukin bro?
gan bisa kasih contoh ma validasinya gak..
@mantri: mungkin nanti sekalian dibuat untuk validasi
@arif: modelnya silakan buat sendiri bro..
mas cecep keren nih tutorialnya..mudah dimengerti…
@diaz: thankz ya
gam mau nanya DBx namax apa….
trus file data_mahasiswa.php ga pake mysql_select_db(” nama databasex”) kah…. kalo tidak file php bisa konek ke database kita pake perintah yang mana ya….
@debe: ada di tutorial ini gan, silakan diliat
http://harian.cheyuz.com/_other/tutorial-codeigniter-dasar-part-i
mas, kalo banyak_data nya bukan di input tapi diperoleh dari jumlah row yang ada di suatu tabel gimana ya carax, misal di tabel ‘a’ ada 5 baris, nah secara otomatis add multiple juga jadi lima baris sejumlah baris di tabel ‘a’ tadi, gimana ya???
jika ingin NIM nya sudah otomatis terisi dari tabel gimana ya, jadi kita hanya tinggal input nama dan seterusnya gitu
@masmalik: tinggal get aja jumlah row yg ada di table pake count($result) ato pake num_rows();
jquery add row contohin dong mas
kok saya keluar dissalowed key characters ya..??
Nice Post gan
kalo di CI 2.0.x tinggal edit-edit dikit kayaknya bisa jalan nih
ok nanti dibuat tutorialnya.. tunggu antrian ya hehe
@tukangbolos: OK gan, thanks..
dissalowwed kyk gmn?
Salam Kenal..
Kok saya ada error ya.. di view..
Katanya :
Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or ‘$’ in D:\xampp\app.sia\views\transaksi\tpl_create.php on line 34
Saya pake CI 2.0.2
Ya yang kemarenbelum dibales..
Tapi uda bisa kok..
Nah sekarang masalahnya kan pake dropdown..
Nah..
Pake..
[td][?php echo form_dropdown("data['.$i.'][NamaAkun]“, $NamaAkun, ”); ?][/td]
Tapi, kan disini mau ngambil ke database akun..
gimana ya jadinya??
Stuck dimodelnya ni gan..
Kasi dun..
foreach($a=1;$adb->insert(‘transaksi’, $data);
}
Bikin kayak gini tapi salah..
Gan,tolong kasih modelnya dong..
Stuck ni..
foreach($a=1;$adb->insert(‘transaksi’, $data);
}
kalo gini ga berhasil..
Nice info gan..