• Multiple Input Form dengan Menggunakan Codeigniter

    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:

    1. Form untuk mengisi berapa data yang akan dimasukkan
    2. Form untuk pengisian form multiple
    3. Daftar data yang telah dimasukkan
    Catatan:
    Diasumsikan base_url() untuk tutorial ini adalah http://localhost/webku
    dan 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

    Banyak mahasiswa yang ingin dimasukkan:

    orang

    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

    No NIM Nama Alamat
    1
    2
    3

    http://localhost/webku/data_mahasiswa/add_multiple_post/5

    Multiple Form Input Mahasiswa

    No NIM Nama Alamat
    1
    2
    3
    4
    5

    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():

    1. Data dicek dulu apakah sudah disubmit ato belum ($_POST==NULL), kalo belum, load view add_multiple_form.php dengan variable $banyak_data yang diambil dari parameter berdasarkan data yg dimasukkan sebelumnya (di function add_multiple(), yaitu $_POST['banyak_data'])
    2. 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)
    3. Kemudian redirect/alihkan ke function lihat_data untuk 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..

    DOWNLOAD

    This entry was posted on Wednesday, July 28th, 2010 at 08:05 and is filed under Code Igniter, PHP, Tutorial, _other. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
  • 50 Comments

    Take a look at some of the responses we have had to this article.

    1. Sep 2nd

      keren..
      hmm untuk nambah rownya ada alternatif lain kayak jquery add-row. cekidot deh

      salam kenal ^^

    2. Sep 2nd

      @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…

    3. Sep 14th

      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 :D

    4. Sep 16th

      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!

    5. Sep 29th

      modelnya mana gan

    6. Sep 29th

      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

    7. Sep 30th

      nice info…sangat membantu..
      terima kasih infonya semoga bermanfaat

    8. Sep 30th

      @indra: thankz :) smoga brmanfaat..

    9. Sep 30th

      @yudhig92: yup, bener gan.. heu2 sy mah blm prnah make zend unk…

    10. Sep 30th

      @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

    11. Oct 6th

      gan kok halamannya gak bisa di copi?

    12. Oct 7th

      @dhaniel: bisa gan, klik kanan, copy

    13. Oct 9th

      cep… mo tanya cep… :D

      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 ;)

    14. Oct 10th

      apik gan,,,mau ta coba.thx

    15. Oct 12th

      @dhim: selamat belajar gan :)

    16. Oct 12th

      @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..

    17. Oct 17th

      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

    18. Oct 18th

      @mahen: nanti insya Allah saya akan buat web khusus tutorial Web Development gan, bntar lagi dirilis, tunggu tanggal mainnya gan :)

    19. stef
      Oct 28th

      kalau untuk form input kan :
      <input id="nama" type="text" name="data[][nama]” value=”"/>

      kalau untuk form dropdown nya yg punya CI :

      gimana cep ?

    20. stef
      Oct 28th

      form_dropdown(‘nama_mkul’.$i, $matkul)

      duh ngga ga kluar code form dropdownnya hehee…

    21. Oct 29th

      @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..

    22. stef
      Oct 29th

      oke ntar saya coba dlu..makasi :)

    23. stef
      Oct 29th

      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

    24. stef
      Oct 29th

      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 ;)

    25. Oct 29th

      wah iya keblok gan.. bentar dibenerin dulu…

    26. Oct 29th

      @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 <>

    27. stef
      Oct 29th

      sip makasih cep …. sori ngerepotin

      thx a lot ya…ditunggu tips+artikel codeigniter lainnya ;)

    28. Oct 30th

      @stef: ok gan sama2… sip, always updated.. ;)

    29. arif
      Nov 18th

      modelnya ga dimasukin bro?

    30. mamtri
      Nov 19th

      gan bisa kasih contoh ma validasinya gak..

    31. Nov 23rd

      @mantri: mungkin nanti sekalian dibuat untuk validasi

    32. Dec 14th

      @arif: modelnya silakan buat sendiri bro.. :)

    33. Dec 15th

      mas cecep keren nih tutorialnya..mudah dimengerti… :D

    34. Dec 19th

      @diaz: thankz ya :)

    35. debe
      Apr 18th

      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….

    36. Apr 21st

      @debe: ada di tutorial ini gan, silakan diliat :) http://harian.cheyuz.com/_other/tutorial-codeigniter-dasar-part-i

    37. May 21st

      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???

    38. May 21st

      jika ingin NIM nya sudah otomatis terisi dari tabel gimana ya, jadi kita hanya tinggal input nama dan seterusnya gitu

    39. Jun 19th

      @masmalik: tinggal get aja jumlah row yg ada di table pake count($result) ato pake num_rows();

    40. eddy
      Jul 7th

      jquery add row contohin dong mas

    41. lucky
      Jul 13th

      kok saya keluar dissalowed key characters ya..??

    42. Aug 4th

      Nice Post gan :)
      kalo di CI 2.0.x tinggal edit-edit dikit kayaknya bisa jalan nih :D

    43. Aug 26th

      jquery add row contohin dong mas

      ok nanti dibuat tutorialnya.. tunggu antrian ya hehe

    44. Aug 26th

      Nice Post gan
      kalo di CI 2.0.x tinggal edit-edit dikit kayaknya bisa jalan nih

      @tukangbolos: OK gan, thanks.. :)

    45. Sep 20th

      kok saya keluar dissalowed key characters ya..??

      dissalowwed kyk gmn?

    46. Nov 12th

      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

    47. Nov 13th

      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??

    48. Nov 21st

      Stuck dimodelnya ni gan..
      Kasi dun..

      foreach($a=1;$adb->insert(‘transaksi’, $data);
      }

      Bikin kayak gini tapi salah.. :(

    49. afif
      Nov 21st

      Gan,tolong kasih modelnya dong..
      Stuck ni..
      foreach($a=1;$adb->insert(‘transaksi’, $data);
      }

      kalo gini ga berhasil..

    50. Guntar
      Dec 20th

      Nice info gan..
      :D

  • Leave a Reply

    Let us know what you thought.

  • Name(required):

    Email(required):

    Website:

    Message:

    Spam Protection by WP-SpamFree