Multiple Upload dengan Jumlah Dinamis Menggunakan Javascript dalam Framework CodeIgniter

dokumen-dokumen yang mirip
Membuat Form Dinamis dengan HTML & Javascript.

Pemrograman Web Berbasis Framework. Pertemuan 8 : Penanganan File dan Image. Hasanuddin, S.T., M.Cs. Prodi Teknik Informatika UAD

Upload File dengan Metode AJAX

Menangani Input dari User

BAB X AKSES DAN MANIPULASI DATA

Cara Sederhana Import Data dari Excel (CSV) ke MySQL dengan PHP

BAB III IMPLEMENTASI. Program penghubung database tersebut disimpan dengan nama. konek.php. Berikut merupakan kode program penghubung Database :

PRAKTIKUM. Rekayasa Web. Modul 2: CRUD CodeIgniter Part I. Laboratorium Teknik Informatika Universitas Pasundan

Pemrograman Web Berbasis Framework. Pertemuan 5 : Konsep MVC : View. Hasanuddin, S.T., M.Cs. Prodi Teknik Informatika UAD

Pemrograman Web Lanjut 2017

TUTORIAL CODEIGNITER Langkah Tepat menjadi Web Developer Handal, menguasai CodeIgniter, jalan membuat aplikasi berbasis website lebih mudah

Pemrograman Web Lanjut 2017

Membuat Combobox Bertingkat dengan CakePHP

MANAGEMENT, FORWARDING & AUTO RESPONDER

TUTORIAL CODEIGNITER Langkah Tepat menjadi Web Developer Handal, menguasai CodeIgniter, jalan membuat aplikasi berbasis website lebih mudah

Cara Mudah dan Cepat Meyimpan File Gambar. Di dalam DATABASE

Script PHP dan MySQL J A M K E E M P A T

BERKENALAN DENGAN MODEL CODEIGNITER

Simak baik-baik komentar-komentar dalam setiap skrip. Komentar diawali dengan tanda #, //, atau /* dan */

TUTORIAL MEMBUAT PROGRAM KALKULATOR DENGAN OOP PHP

Membuat Plugin Wordpress Sederhana

Bermain Dynamic Tabel Row dengan menggunakan Javascript

Conditional PRAKTIKUM PHP Conditional, Array & Perulangan di PHP

Membuat Toko Online dengan Ajax Jquery [Part 4]

PHP dan Framework CodeIgniter

Pengenalan Script. Definisi HTML

Misalkan suatu variabel bernama X bertipe data array, maka X ini dapat Anda bayangkan seperti gambar berikut

Sortable Datagrid dengan Paginating Data

PENGENALAN HTML - 2. Anda bisa menambahkan beberapa cell (kolom) untuk membuat satu baris cell (kolom).

TUTORIAL PHP MYSQL Langkah Tepat menjadi Web Developer Handal, menguasai PHP dan MySQL, jalan terbaik membuat website dan aplikasi berbasis web

PHP File Upload.

MEMBUAT MASTER BERITA Teknik Informatika Sopingi, M.Kom

E-trik Ajax. Database MySQL. Dedi Alnas

BAB XIII BEKERJA DENGAN SESSION

Kinta mahadji

Pemrograman Web Berbasis Framework. Pertemuan 4 : Konsep MVC : Controller. Hasanuddin, S.T., M.Cs. Prodi Teknik Informatika UAD

Modul Pembuatan Aplikasi Login dengan PHP dan MySQL

Membuat Database mysql dengan PhpMyAdmin

Tutorial PHP Metode Searching - Multiple Keyword

Modul Pembuatan Aplikasi Biodata dengan PHP dan MySQL

b) Membuat database tiket. Siapkan databasenya dengan membuat database tiket Sampai langkah ini database tiket sudah siap digunakan

Pemrograman Web II DANU WIRA PANGESTU

PHP dan MySQL. Mempelajari koneksi PHP. Fungsi-fungsi aksesnya. Muhammad Zen Samsono Hadi, ST. MSc

MEMBUAT CRUD (CREATE, READ, UPDATE & DELETE) DENGAN CODEIGNITER

SMH2D3 Web Programming. 7 BAB V PHP SESSION & COOKIES. H a l IDENTITAS. Kajian Teknik pemrograman menggunakan PHP

Gambar 1. Tampilan form karyawan

MEMBER. 1. Tabel member. 2. Form Pendaftaran Member : formmember.php. 3. Script Form Pendaftaran Member

Bab12 Pembuatan Aplikasi Biodata dengan PHP MYSQL

PHP dan MySQL. Mempelajari koneksi PHP dengan database MySQL dan Fungsi-fungsi aksesnya. Muhammad Zen S. Hadi, ST. MSc.

Lampiran Kode Program

BAB III IMPLEMENTASI LIBRARY CODEIGNITER

MODUL PEMOGRAMAN WEB II STMIK IM BANDUNG MODUL PEMOGRAMAN WEB II. Oleh: CHALIFA CHAZAR. Chalifa Chazar edu.script.id

LAPORAN PRAKTIKUM TEKNOLOGI FRAMEWORK PERTEMUAN KE 1

Oleh: Ahmad Syauqi Ahsan

Pemrograman Web PRAKTIKUM 6. Query Data 2. TUJUAN BELAJAR Mahasiswa dapat menggunakan PHP dan MySQL untuk mengupdate data

MODUL 8 Insert, Update, & delete

LAMPIRAN. Lampiran 1 Wawancara dengan Bapak Thoriq Rachmat selaku Manager IT di PT. 1. Apakah perusahaan saat ini membutuhkan sistem server yang baru?

Membuat Sistem Pertemanan Sederhana

Membuat Login Dengan PHP dan MYSQL

MODUL 3 INTERNET PROGRAMMING : PHP 3

BAB IX COOKIE DAN SESSION

Lisensi Dokumen: Uraian Kasus :

SEARCHING, EDIT / UPDATE DAN DELETE. PHP & MYSQL Part Two

Materi 10: Create Read Update Delete

Langkah 1 Struktur Folder. Langkah 2 Database. Detil Tutorial

Dengan asumsi bahwa aplikasi masih menggunakan cookie, maka query untuk membuka profil adalah seperti berikut:

MODUL PEMOGRAMAN WEB II STMIK IM BANDUNG MODUL PEMOGRAMAN WEB II. Oleh: CHALIFA CHAZAR. Chalifa Chazar edu.script.id

Untuk fungsi 'r' dan 'a' kita juga bisa menambahkan tanda '+' di belakang ('a+' dan 'r+') untuk menambahkan fungsi menbaca selain fungsi aslinya.

Fungsi Insert Data dalam CRUD (CREATE READ UPDATE DELETE) di Codeigniter

Penjelasan Program. Digunakan untuk menampilkan data yang akan dihapus.

STMIK DIKTAT SINGKAT MACROMEDIA DREAMWEAVER 8 SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER TASIKMALAYA.

CHAPTER 6. Sebelum membuat starter data, kita perlu meng-create collections terlebih dahulu. Buat folder lib pada folder aplikasi.

Cara Membuat Security Image Code Dengan PHP

Membuat Web Chatting dengan Ajax Jquery, PHP, dan Bootstrap [Part 2]

MODUL GET DAN POST

Limitasi Text Input dengan Javascript

Create Read Update Delete using PHP MySql

Membuat Flexibel Input sederhana dengan jquery.

BAB V SIMPULAN DAN SARAN. Sistem pengambilan keputusan menggunakan metode multifactor

Validasi Form dengan CakePHP

MODUL 11 MEMBUAT LOGIN USER

PERCABANGAN. Contoh :

Konsep Basis Data di Web

Tutorial CakePHP Dasar Part III - Sorting, Pagination

MEMBUAT CRUD DENGAN CODEIGNITER : INPUT DATA KE DATABASE

BAB IV HASIL DAN PEMBAHASAN

Modul-7 CRUD & Searching. Pemograman Web TEKNIK INFORMATIKA UNIVERSITAS PASUNDAN BANDUNG

SILAKAN COPY SCRIPT DIBAWAH INI KE NOTEPAD ATAU EDITOR TEXT LAIN KEMUDIAN SAVE AS DENGAN NAMA FILE chaincalc.html KEMUDIAN JALANKAN DI BROWSER ANDA

Codeigniter : Membuat kalkulator sederhana

Membuat Laporan dengan Bahasa Pemrograman Berbasis WEB

Pemrograman Web Berbasis Framework. Pertemuan 7 : Keamanan Aplikasi. Hasanuddin, S.T., M.Cs. Prodi Teknik Informatika UAD

Fungsi fungsi tambahan dalam PHP Session dan Cookie

PHP & Mysql. Pemrograman Internet

MODUL PRATIKUM - 09 PEMROGRAMAN BERBASIS WEB (CCP119)

BAB 7 APLIKASI KOMENTAR DAN VALIDASINYA

CODEIGNITER 3. Belajar Mandiri. Zamah Sari

Penanganan Formulir PHP. Pemrograman Web - Penanganan Formulir. Agi Putra Kharisma, ST., MT.

SOURCE CODE UNTUK PENERAPAN ALGORITMA APRIORI

Membuat Simpel Site HTML Layout Menggunakan Tag div

Convert Foto Resolusi Tinggi dan Ukuran Besar (MB) Tanpa Mengurangi Ukuran Resolusi (PX) dengan PHP

Transkripsi:

http://akbaraziz.staff.ipb.ac.id/2011/02/02/multiple-upload-dengan-jumlah-dinamis-menggunakan-ja v Multiple Upload dengan Jumlah Dinamis Menggunakan Javascript dalam Framework CodeIgniter Biasanya jika kita membuat sebuah form inputan dalam php, inputan-inputan itu jumlahnya statis artinya tidak bisa ditambah. Lalu bagaimana jika kita ingin inputan itu bisa ditambah sesuai keinginan? Baik itu berupa inputan text, combobox, atau upload file. Pada prinsipnya tipe inputan itu sama saja prosesnya (menurut aku yg masih newbie neh :D). Nah, disini saya akan mencoba membuat program dimana kita bisa input file gambar dengan jumlah yang dinamis beserta keterangannya. bisa ditambah atau dikurang sesuai keinginan. Ok, kita langsung saja buat programnya. Mungkin bagi yang sudah jago coding sih, codingan dibawah ini ribet gak karuan kali ya? :D Pertama kita buat tabel dulu di database. kita berikan nama database "websitekita" dan tabel "gallery" dengan field : 1. id (autoincrement) 2. foto (varchar 100) 3. keterangan (text) Lalu kita buat file view-nya dulu deh, biar nanti tidak tanya-tanya untuk apa sih buat variable ini dan itu. Misal kita buat file view yang bernama "gallery_view.php" (saya langsung tulis isi page-nya ya, untuk templatenya silahkan buat sendiri) dalam codingnya : page 1 / 16

<script language="javascript" type="text/javascript"> // variable ini untuk memberi tahu kepada si "controller", jumlah foto yg diupload jml = 2; // jumlah awal mula inputan belum ditambah counter = 0; // fungsi ketika akan tambah inputan function action() counternext = counter + 1; // nantinya div "addfoto" akan terisi code html dibawah ini jika klik "tambah foto" (saya gk pke "enter" disini, soalnya dulu pernah ngaruh sama scriptnya :D) document.getelementbyid("addfoto"+counter).innerhtml = "<br /><input type='file' name='foto_" + jml + "' size='30' /><br /><input type='text' name='keterangan_" + jml + "' size='30' /> <div id="addfoto" + counternext + ""></div>"; counter++; // nanti dalam form ada input hidden yang menyimpan jumlah foto yg akan di upload document.form.jml_foto.value = jml; jml++; // fungsi ketika akan mengurangi inputan function remove() no=counter-1; // isi div "addfoto" akan dihapus sesuai urutannya ("addfoto0", "addfoto1", dll) page 2 / 16

document.getelementbyid("addfoto"+no).innerhtml = " "; counter--; jml--; bnyk = jml - 1; document.form.jml_foto.value = bnyk; </script> <?php // ambil flashdata bernama 'message' $message = $this->session->flashdata('message'); echo!empty($message)? "<font color='red'>".$message."</font><br /><br />" : "";?> <!-- jangan lupa isikan attribute => enctype="multipart/form-data" --> <form name='form' method='post' action='<?php echo $form_action;?>' enctype="multipart/form-data"> <input type='hidden' name='jml_foto' value='1' /> <table cellspacing='3'> <tr> <th align='left' valign='top'>foto</th> <td> <!-- nama fotonya --> <input type='file' name='foto_1' size='30' /><br /> <!-- nama keterangannya --> <input type='text' name='keterangan_1' maxlength='50' size='30' /> <!-- link untuk tambah inputan --> <a href="javascript:action();">tambah Foto</a> <!-- link untuk kurangi inputan --> <a href="javascript:remove();">kurangi Foto</a><br /> <!-- ini div dimana inputan baru akan muncul --> <div id="addfoto0"> </div> </td> </tr> page 3 / 16

<tr> <td></td> <td align='left'> <input type='submit' class='button' value='simpan' name='simpan' /> </td> </tr> </table> </form> <br /> Nah, setelah ini kita buat file controller dengan nama "gallery.php", dengan coding : <?php class Gallery extends Controller function Gallery() parent::controller(); // memanggil class gallery_model di folder model (akan kita buat setelah ini) $this->load->model("gallery_model","",true); function index() $data['form_action']=site_url('gallery/tambah'); form tambah di file 'gallery_view.php' // value attribut action pada page 4 / 16

// memanggil file gallery_view.php (di folder view) dengan mengirim variable-variable yang berada dalam array $data $this->load->view('gallery_view', $data); // fungsi tambah foto gallery function tambah() // menyimpan nilai foto_1 dan jml foto inputan user $ada_foto = $this->input->post('foto_1'); $jml_foto = $this->input->post('jml_foto'); if((isset($jml_foto) && $jml_foto > 0) && isset($ada_foto)) // jika ada foto yang di upload // inisial terlebih dahulu klo upload gagal dengan memberi nilai false pada variable $cek_upload $cek_upload = false; // lakukan looping sebanyak foto diupload (disini saya mau upload semua foto dulu, baru insert data ke database) for($i=1;$i<=$jml_foto;$i++) // setting file yg akan diupload $config['upload_path'] = 'gallery/'; // path folder foto akan disimpan (buat saja setara dgn folder "system" CI $config['allowed_types'] = 'gif jpg png jpeg'; // bisa diubah sesuai kebutuhan $config['max_size'] = '2000'; // maksimal size file $this->load->library('upload',$config); // panggil library 'upload' di CI $this->upload->initialize($config); // ====================== if(!$this->upload->do_upload('foto_'.$i)) // jika gagal upload (tidak sesuai configuration) page 5 / 16

$cek_upload = false; break; // keluar looping else // jika berhasil upload $data = array('upload_data'=>$this->upload->data()); // saya simpan nama2 filenya ke $nama[] menggunakan array untuk penyimpanan ke database nantinya $nama[$i] = $data['upload_data']['file_name']; $cek_upload = true; if($cek_upload == true) // jika semua upload berhasil // lakukan sebanyak jumlah foto : for($i=1;$i<=$jml_foto;$i++) // memasukkan nama file tadi (nama[]) $rec = array( 'foto' => $nama[$i], 'keterangan' => $this->input->post('keterangan_'.$i) ); // fungsi tambah data dengan memanggil fungsi tambah_data($rec) di file ym_model.php (di folder model) // dengan mengirim inputan di $rec $this->product_model->tambah_foto($rec); // ====== // menyimpan pesan pada flashdata dengan nama 'message' yang berisi 'Foto Baru Tersimpan' untuk ditampilkan di view page 6 / 16

$this->session->set_flashdata('message','foto Baru Tersimpan'); // kembali menuju form redirect('gallery'); else // jika ada yang gagal, maka semua foto sebelumnya yg berhasil diupload akan dihapus for($j=1;$j<=$jml_foto;$j++) if(file_exists('public/foto produk/'.$nama[$j])) // cek apakah ada file sebelumnya unlink('public/foto produk/'.$nama[$j]); // jika ada maka dihapus filenya $this->session->set_flashdata('message', '<font color="red">upload Foto Gagal</font><br />'); redirect('gallery'); else $this->session->set_flashdata('message','data Tidak Tersimpan'); redirect('gallery');?> terakhir kita buat modelnya dengan nama gallery_model.php <?php page 7 / 16

class Gallery_model extends Model function Gallery_model() parent::model(); // inisial table = 'gallery' sebagai nama table di database yang akan digunakan di class ini var $table='gallery'; // fungsi untuk menambah data foto dengan inputan dari controller gallery.php function tambah_foto($rec) $this->db->insert("foto", $rec);?> Nah...beres deh. Semoga tulisan ini bermanfaat. Terima kasih... catatan : karena penulisan coding di blog jadi aneh, harus dirubah tuh tanda kutip juga code yg ini : counter - -; kalau dicopy malah jadi counter-; juga untuk comment html yg "<!-- -->" jd tidak berjalan (mungkin tergantung editornya kali ya :D) Biasanya jika kita membuat sebuah form inputan dalam php, inputan-inputan itu jumlahnya statis artinya tidak bisa ditambah. Lalu bagaimana jika kita ingin inputan itu bisa ditambah sesuai keinginan? Baik itu berupa inputan text, combobox, atau upload file. page 8 / 16

Pada prinsipnya tipe inputan itu sama saja prosesnya (menurut aku yg masih newbie neh :D). Nah, disini saya akan mencoba membuat program dimana kita bisa input file gambar dengan jumlah yang dinamis beserta keterangannya. bisa ditambah atau dikurang sesuai keinginan. Ok, kita langsung saja buat programnya. Mungkin bagi yang sudah jago coding sih, codingan dibawah ini ribet gak karuan kali ya? :D Pertama kita buat tabel dulu di database. kita berikan nama database "websitekita" dan tabel "gallery" dengan field : 1. id (autoincrement) 2. foto (varchar 100) 3. keterangan (text) Lalu kita buat file view-nya dulu deh, biar nanti tidak tanya-tanya untuk apa sih buat variable ini dan itu. Misal kita buat file view yang bernama "gallery_view.php" (saya langsung tulis isi page-nya ya, untuk templatenya silahkan buat sendiri) dalam codingnya : <script language="javascript" type="text/javascript"> // variable ini untuk memberi tahu kepada si "controller", jumlah foto yg diupload jml = 2; // jumlah awal mula inputan belum ditambah counter = 0; // fungsi ketika akan tambah inputan function action() counternext = counter + 1; // nantinya div "addfoto" akan terisi code html dibawah ini jika klik "tambah foto" (saya gk pke "enter" disini, soalnya dulu pernah ngaruh sama scriptnya :D) page 9 / 16

document.getelementbyid("addfoto"+counter).innerhtml = "<br /><input type='file' name='foto_" + jml + "' size='30' /><br /><input type='text' name='keterangan_" + jml + "' size='30' /> <div id="addfoto" + counternext + ""></div>"; counter++; // nanti dalam form ada input hidden yang menyimpan jumlah foto yg akan di upload document.form.jml_foto.value = jml; jml++; // fungsi ketika akan mengurangi inputan function remove() no=counter-1; // isi div "addfoto" akan dihapus sesuai urutannya ("addfoto0", "addfoto1", dll) document.getelementbyid("addfoto"+no).innerhtml = " "; counter--; jml--; bnyk = jml - 1; document.form.jml_foto.value = bnyk; </script> <?php // ambil flashdata bernama 'message' $message = $this->session->flashdata('message'); page 10 / 16

echo!empty($message)? "<font color='red'>".$message."</font><br /><br />" : "";?> <!-- jangan lupa isikan attribute => enctype="multipart/form-data" --> <form name='form' method='post' action='<?php echo $form_action;?>' enctype="multipart/form-data"> <input type='hidden' name='jml_foto' value='1' /> <table cellspacing='3'> <tr> <th align='left' valign='top'>foto</th> <td> <!-- nama fotonya --> <input type='file' name='foto_1' size='30' /><br /> <!-- nama keterangannya --> <input type='text' name='keterangan_1' maxlength='50' size='30' /> <!-- link untuk tambah inputan --> <a href="javascript:action();">tambah Foto</a> <!-- link untuk kurangi inputan --> <a href="javascript:remove();">kurangi Foto</a><br /> <!-- ini div dimana inputan baru akan muncul --> <div id="addfoto0"> </div> </td> </tr> <tr> <td></td> <td align='left'> <input type='submit' class='button' value='simpan' name='simpan' /> </td> </tr> </table> </form> <br /> Nah, setelah ini kita buat file controller dengan nama "gallery.php", dengan coding : page 11 / 16

<?php class Gallery extends Controller function Gallery() parent::controller(); // memanggil class gallery_model di folder model (akan kita buat setelah ini) $this->load->model("gallery_model","",true); function index() $data['form_action']=site_url('gallery/tambah'); form tambah di file 'gallery_view.php' // value attribut action pada // memanggil file gallery_view.php (di folder view) dengan mengirim variable-variable yang berada dalam array $data $this->load->view('gallery_view', $data); // fungsi tambah foto gallery function tambah() page 12 / 16

// menyimpan nilai foto_1 dan jml foto inputan user $ada_foto = $this->input->post('foto_1'); $jml_foto = $this->input->post('jml_foto'); if((isset($jml_foto) && $jml_foto > 0) && isset($ada_foto)) // jika ada foto yang di upload // inisial terlebih dahulu klo upload gagal dengan memberi nilai false pada variable $cek_upload $cek_upload = false; // lakukan looping sebanyak foto diupload (disini saya mau upload semua foto dulu, baru insert data ke database) for($i=1;$i<=$jml_foto;$i++) // setting file yg akan diupload $config['upload_path'] = 'gallery/'; // path folder foto akan disimpan (buat saja setara dgn folder "system" CI $config['allowed_types'] = 'gif jpg png jpeg'; // bisa diubah sesuai kebutuhan $config['max_size'] = '2000'; // maksimal size file $this->load->library('upload',$config); // panggil library 'upload' di CI $this->upload->initialize($config); // ====================== if(!$this->upload->do_upload('foto_'.$i)) // jika gagal upload (tidak sesuai configuration) $cek_upload = false; break; // keluar looping else // jika berhasil upload $data = array('upload_data'=>$this->upload->data()); // saya simpan nama2 filenya ke $nama[] menggunakan array untuk penyimpanan ke database nantinya $nama[$i] = $data['upload_data']['file_name']; page 13 / 16

$cek_upload = true; if($cek_upload == true) // jika semua upload berhasil // lakukan sebanyak jumlah foto : for($i=1;$i<=$jml_foto;$i++) // memasukkan nama file tadi (nama[]) $rec = array( 'foto' => $nama[$i], 'keterangan' => $this->input->post('keterangan_'.$i) ); // fungsi tambah data dengan memanggil fungsi tambah_data($rec) di file ym_model.php (di folder model) // dengan mengirim inputan di $rec $this->product_model->tambah_foto($rec); // ====== // menyimpan pesan pada flashdata dengan nama 'message' yang berisi 'Foto Baru Tersimpan' untuk ditampilkan di view $this->session->set_flashdata('message','foto Baru Tersimpan'); // kembali menuju form redirect('gallery'); else // jika ada yang gagal, maka semua foto sebelumnya yg berhasil diupload akan dihapus for($j=1;$j<=$jml_foto;$j++) if(file_exists('public/foto produk/'.$nama[$j])) // cek apakah ada file sebelumnya unlink('public/foto produk/'.$nama[$j]); // jika ada maka dihapus filenya page 14 / 16

$this->session->set_flashdata('message', '<font color="red">upload Foto Gagal</font><br />'); redirect('gallery'); else $this->session->set_flashdata('message','data Tidak Tersimpan'); redirect('gallery'); terakhir kita buat modelnya dengan nama gallery_model.php class Gallery_model extends Model function Gallery_model() parent::model(); // inisial table = 'gallery' sebagai nama table di database yang akan digunakan di class ini var $table='gallery'; // fungsi untuk menambah data foto dengan inputan dari controller gallery.php function tambah_foto($rec) page 15 / 16

$this->db->insert("foto", $rec); Nah...beres deh. Semoga tulisan ini bermanfaat. Terima kasih... page 16 / 16