请帮助我亲爱的,我想尝试启用其他标题和其他上传文件的多输入.是不是我做的控制器有问题,所以它循环其他标题和多个文件,只有一个上传到数据库?
这是我的代码视图
<!-- Modal -->
<div class="form-row">
<div class="form-group col-md-12">
<label for="otitle">Other</label>
<div class="form-row add-container">
<div class="col-6">
<input type="text" class="form-control" id="" name="other_title[]" placeholder="Input title" multiple>
</div>
<div class="col-5">
<input class="form-control" type="file" name="other_file[]" id="" multiple>
</div>
<div class="col-auto">
<a class="btn add-comp" style="border: 0; padding: 10px;"><i class="fa fa-plus" style="color: #006CF8;"></i></a>
</div>
</div>
</div>
</div>
</div>
<!-- End Modal -->
这是我代码的Controller
public function actionBible($type, $id = null)
{
$id_kategori = $this->input->post('id_kategori');
$id_kategori = $id_kategori == NULL ? $this->input->post('nama_kategori') : $id_kategori;
$data = array(
'nama_bible' => $this->input->post('nama_bible'),
'description' => $this->input->post('description'),
'datasheet_title' => $this->input->post('datasheet_title'),
'manual_title' => $this->input->post('manual_title'),
'id_kategori' => $id_kategori,
'created_by' => $this->session->userdata('nama_user'),
);
$folderUpload = "./uploads/bible/";
$files = $_FILES;
// datasheet
$namaFile = $files['file']['name'];
$lokasiTmp = $files['file']['tmp_name'];
// # kita tambahkan uniqid() agar nama gambar bersifat unik
$namaBaru = uniqid() . '-' . $namaFile;
$lokasiBaru = "{$folderUpload}/{$namaBaru}";
move_uploaded_file($lokasiTmp, $lokasiBaru);
// manual
$namaFileManual = $files['manual_file']['name'];
$lokasiTmpManual = $files['manual_file']['tmp_name'];
// # kita tambahkan uniqid() agar nama gambar bersifat unik
$namaBaruManual = uniqid() . '-' . $namaFileManual;
$lokasiBaruManual = "{$folderUpload}/{$namaBaruManual}";
move_uploaded_file($lokasiTmpManual, $lokasiBaruManual);
// datasheet
$ktp = array('file' => $namaBaru);
if ($namaFile != NULL) {
$data = array_merge($data, $ktp);
}
// manual
$manual = array('manual' => $namaBaruManual);
if ($namaFileManual != NULL) {
$data = array_merge($data, $manual);
}
// var_dump($data);
if ($type == 'add') {
$store = $this->db->insert('tb_bible', $data);
if ($store) {
// attachments
$getLastId = $this->db->order_by('id_bible', 'DESC')->limit(1)->get('tb_bible')->row_array();
$files = $_FILES;
$jumlahFile = count($files['other_file']['name']);
$other_title = $this->input->post('other_title');
for ($i = 0; $i < $jumlahFile; $i++) {
$data = array(
'id_bible' => $getLastId['id_bible'],
'id_other' => $this->input->post('id_other'),
'other_title' => $other_title[$i],
'created_at' => date('Y-m-d H:i:s')
);
$folderUpload = "./uploads/upnormal/";
$files = $_FILES;
$namaFileOther = $files['other_file']['name'][$i];
$lokasiTmpOther = $files['other_file']['tmp_name'][$i];
// # kita tambahkan uniqid() agar nama gambar bersifat unik
$namaBaruOther = uniqid() . '-' . $namaFileOther;
$lokasiBaruOther = "{$folderUpload}/{$namaBaruOther}";
move_uploaded_file($lokasiTmpOther, $lokasiBaruOther);
$other = array('other' => $namaBaruOther); // mengambil nama baru dan di upload ke dalam databases
if ($namaFileOther != NULL) {
$data = array_merge($data, $other);
$this->db->insert('tb_other_bible', $data);
}
}
}
} elseif ($type == 'edit') {
$this->db->update('tb_bible', $data, ['id_bible' => $this->input->post('id_bible')]);
} else {
$data = array(
'delete' => 1
);
$this->db->update('tb_bible', $data, ['id_bible' => decrypt_url($id)]);
}
$this->session->set_flashdata('messageAlert', $this->messageAlert('success', "Data $type"));
redirect('bible/guide');
}
1条答案
按热度按时间egmofgnx1#
<input type="text"
不支持multiple
属性。参见MDN docs for multiple attribute文件输入字段允许选择多个文件。但是文本输入字段不允许输入多个值。
因此,如果您希望允许用户为他们选择的每个文件输入标题,则需要更改设计,以便根据所选文件的数量更改文本输入的数量。这可以通过JavaScript来完成,JavaScript侦听文件输入元素上的更改事件。