1

I am an newbie here and i need help so badly with my research project. I have no clue about uploading multiple image to different field in database using codeigniter. I have tried so many way past a few days but still failed..

My question is, it is possible in codeigniter to have more than one input/browse file for image button in a single form to save all in one table in a database. I have two text fields and I want different images for each one. I want to save one or more than one images with 1st text box and one or more than one images with the second text box in single form.

My current error is only 1 image success uploaded to field and another field is null.

My Controller:

public function create(){
    //form validation sebelum mengeksekusi QUERY INSERT
    $this->form_validation->set_rules('nama', 'Nama Property', 'required');
    $this->form_validation->set_rules('deskripsi_singkat', 'Deskripsi Singkat', 'required');
    $this->form_validation->set_rules('deskripsi_lengkap', 'Deskripsi Lengkap', 'required');
    $this->form_validation->set_rules('harga_range', 'Price Range', 'required|integer');
    $this->form_validation->set_rules('unit', 'Total Unit', 'required|integer');
    //$this->form_validation->set_rules('userfile', 'Product Image', 'required');

    if ($this->form_validation->run() == FALSE)
    {
        $this->load->view('backend/form_tambah_product');
    } else {
        //load uploading file library

        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'jpg|png';
        $config['max_size'] = '300'; //MB
        $config['max_width']  = '2000'; //pixels
        $config['max_height']  = '2000'; //pixels

        $this->load->library('upload', $config);
        $this->upload->initialize($config);

        if ( ! $this->upload->do_upload('gambar'))
        {
            //file gagal diupload -> kembali ke form tambah
            $this->load->view('backend/form_tambah_product');
        } else {

            $upload_data = $this->upload->data();
        }

        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'jpg|png';
        $config['max_size'] = '300'; //MB
        $config['max_width']  = '2000'; //pixels
        $config['max_height']  = '2000'; //pixels

        $this->load->library('upload', $config);
        $this->upload->initialize($config);

        if ( ! $this->upload->do_upload('gambar1'))
        {
            //file gagal diupload -> kembali ke form tambah
            $this->load->view('backend/form_tambah_product');
        } else {

            $upload_data2 = $this->upload->data();
        }
            //file berhasil diupload -> lanjutkan ke query INSERT
            // eksekusi query INSERT

            $data_product = array(
                'nama'          => set_value('nama'),
                'deskripsi_singkat' => set_value('deskripsi_singkat'),
                'deskripsi_lengkap' => set_value('deskripsi_lengkap'),
                'harga_range'           => set_value('harga_range'),
                'unit'          => set_value('unit'),
                'image'=>$upload_data['file_name'],
                'blok_plan'=>$upload_data2['file_name']
            );

            $this->model_products->create($data_product);   
        }
     }

View:

<div><?= validation_errors() ?></div>
            <?= form_open_multipart('products/create', ['class'=>'form-horizontal']) ?>

                  <div class="form-group">
                    <label for="inputEmail3" class="col-sm-2 control-label">Nama Property</label>
                    <div class="col-sm-10">
                      <input type="text" class="form-control" name="nama" placeholder="" value="<?= set_value('nama') ?>">
                    </div>
                  </div>

                  <div class="form-group">
                    <label for="inputPassword3" class="col-sm-2 control-label">Deskripsi Singkat</label>
                    <div class="col-sm-10">
                      <input type="text" class="form-control" name="deskripsi_singkat" placeholder="" value="<?= set_value('deskripsi_singkat') ?>">
                    </div>
                  </div>

                  <div class="form-group">
                    <label for="inputPassword3" class="col-sm-2 control-label">Deskripsi Lengkap</label>
                    <div class="col-sm-10">
                      <textarea class="form-control" name="deskripsi_lengkap"><?= set_value('deskripsi_lengkap') ?></textarea>
                    </div>
                  </div>

                  <div class="form-group">
                    <label for="inputPassword3" class="col-sm-2 control-label">Price Range</label>
                    <div class="col-sm-10">
                      <input type="text" class="form-control" name="harga_range" placeholder="" value="<?= set_value('harga_range') ?>">
                    </div>
                  </div>

                  <div class="form-group">
                    <label for="inputPassword3" class="col-sm-2 control-label">Total Unit</label>
                    <div class="col-sm-10">
                      <input type="text" class="form-control" name="unit" placeholder="" value="<?= set_value('unit') ?>">
                    </div>
                  </div>

                  <div class="form-group">
                    <label for="inputPassword3" class="col-sm-2 control-label">Property Image</label>
                    <div class="col-sm-10">
                      <input type="file" class="form-control" name="gambar" >
                    </div>
                  </div>

                  <div class="form-group">
                    <label for="inputPassword3" class="col-sm-2 control-label">Blok Plan</label>
                    <div class="col-sm-10">
                      <input type="file" class="form-control" name="gambar1" >
                    </div>
                  </div>

                  <div class="form-group">
                    <div class="col-sm-offset-2 col-sm-10">
                      <button type="submit" class="btn btn-default">Save</button>
                    </div>
                  </div>

            <?= form_close() ?>
        </div>
        <div class="col-md-1"></div>
    </div>


    <script>
        $(document).ready(function(){
            $('#myTable').DataTable();
        });
    </script>

Model:

public function create($data_products){
    //Query INSERT INTO
    $this->db->insert('list_properti',$data_products);
}
Cœur
  • 37,241
  • 25
  • 195
  • 267

2 Answers2

0

Use jquery for this or you can use select2 or chosen library. See how to use select2 for Multiple input:

https://select2.github.io/examples.html.

If you know the way how to use jquery and basic php, you will do this.

Kabir Hossain
  • 2,865
  • 1
  • 28
  • 34
0

Finally, thanks guys for the reference.

public function create(){
    //form validation sebelum mengeksekusi QUERY INSERT
    $this->form_validation->set_rules('nama', 'Nama Property', 'required');
    $this->form_validation->set_rules('deskripsi_singkat', 'Deskripsi Singkat', 'required');
    $this->form_validation->set_rules('deskripsi_lengkap', 'Deskripsi Lengkap', 'required');
    $this->form_validation->set_rules('harga_range', 'Price Range', 'required|integer');
    $this->form_validation->set_rules('unit', 'Total Unit', 'required|integer');
    //$this->form_validation->set_rules('userfile', 'Product Image', 'required');

    if ($this->form_validation->run() == FALSE)
    {
        $this->load->view('backend/form_tambah_product');
    } else {
        //load uploading file library

        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'jpg|png';
        $config['max_size'] = '300'; //MB
        $config['max_width']  = '2000'; //pixels
        $config['max_height']  = '2000'; //pixels

        $this->load->library('upload', $config);
        $this->upload->initialize($config);

        if ( ! $this->upload->do_upload('gambar'))
        {
            //file gagal diupload -> kembali ke form tambah
            $this->load->view('backend/form_tambah_product');
        } else {

        $upload_data = $this->upload->data();

        $config2['upload_path'] = './uploads/';
        $config2['allowed_types'] = 'jpg|png';
        $config2['max_size']    = '300'; //MB
        $config2['max_width']  = '2000'; //pixels
        $config2['max_height']  = '2000'; //pixels

        $this->load->library('upload', $config2);
        $this->upload->initialize($config2);

        if ( ! $this->upload->do_upload('gambar1'))
        {
            //file gagal diupload -> kembali ke form tambah
            $this->load->view('backend/form_tambah_product');
        } else {

            $upload_data2 = $this->upload->data();

            //file berhasil diupload -> lanjutkan ke query INSERT
            // eksekusi query INSERT

            $data_product = array(
                'nama'          => set_value('nama'),
                'deskripsi_singkat' => set_value('deskripsi_singkat'),
                'deskripsi_lengkap' => set_value('deskripsi_lengkap'),
                'harga_range'           => set_value('harga_range'),
                'unit'          => set_value('unit'),
                'image'=>$upload_data['file_name'],
                'blok_plan'=>$upload_data2['file_name']
            );

            $this->model_products->create($data_product);
        }
            redirect('products');   
        }
     }
}