php - 在 codeigniter 中,有可能有超过 1 个输入/浏览文件用于以单一形式上传不同的图像,以将所有文件保存在数据库的 1 个表中?

标签 php mysql codeigniter

我是这里的新手,我的研究项目非常需要帮助。我不知道如何使用 codeigniter 将多个图像上传到数据库中的不同字段。这几天我试了很多方法,但还是失败了..

我的问题是,在 codeigniter 中,有可能以一种形式为图像按钮提供多个输入/浏览文件,以将所有文件保存在数据库的一个表中。我有两个文本字段,每个文本字段都需要不同的图像。我想以单一形式保存一张或多张带有第一个文本框的图像和一张或多张带有第二个文本框的图像。

我目前的错误是只有一张图片成功上传到字段,另一个字段为空。

我的 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);   
        }
     }

查看:

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

型号:

public function create($data_products){
    //Query INSERT INTO
    $this->db->insert('list_properti',$data_products);
}

最佳答案

为此使用 jquery,或者您可以使用 select2 或选择的库。查看如何使用 select2 进行多输入:

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

如果你知道如何使用 jquery 和基本的 php,你就会这样做。

关于php - 在 codeigniter 中,有可能有超过 1 个输入/浏览文件用于以单一形式上传不同的图像,以将所有文件保存在数据库的 1 个表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32116423/

相关文章:

基于评分公式的 PHP 数组排序?

php - MySQL 查询 w/COUNT() 和 HAVING 基于日期比较

php - "%"MySQL 问题

MySQL 使用 LIMIT 返回第一条记录

php - 从 JQuery 中读取 'echo json_encode( )' 的正确方法

php - 保护共享 lighttpd 设置的安全

php - Codeigniter 首次使用者

php - 使用 Codeigniter 上传多张图片,仅将一个文件路径保存到 MySQL 数据库

mysql - 清理 AJAX jquery 自动完成脚本

foreach循环中的PHP异常