我有一個 codeigniter 網站,它有一個允許用戶多次上傳一些資料的表單,
我的觀點如下:
<input type="text" name="pname[]">
<input type="file" name="pimage[]" multiple="multiple">
<input type="text" name="pname[]" >
<input type="file" name="pimage[]" multiple="multiple">
我的控制器就像:
if(isset($_POST['addproduct']))
{
foreach($this->input->post('pname') as $row =>$value) {
$this->load->library('upload');
$image = array();
$ImageCount = count($_FILES['pimage']['name']);
for($i = 0; $i < $ImageCount; $i ){
$_FILES['file']['name'] = $_FILES['pimage']['name'][$i];
$_FILES['file']['type'] = $_FILES['pimage']['type'][$i];
$_FILES['file']['tmp_name'] = $_FILES['pimage']['tmp_name'][$i];
$_FILES['file']['error'] = $_FILES['pimage']['error'][$i];
$_FILES['file']['size'] = $_FILES['pimage']['size'][$i];
$uploadPath = './uploads/products/';
$config['upload_path'] = $uploadPath;
$config['allowed_types'] = 'jpg|jpeg|png|gif';
$this->load->library('upload', $config);
$this->upload->initialize($config);
if($this->upload->do_upload('file')){
$imageData = $this->upload->data();
$uploadImgData[] = $imageData['file_name'];
}
}
$pname = $this->input->post('pname')[$row];
$pimage = $uploadImgData;
$insertUserData = $this->category->addbulkproducts($pname,$pimage)
}
這里的問題是圖片,如果我為第一個產品上傳 2 張圖片,為第二個產品上傳 2 張圖片,所有 4 張圖片都被上傳了 2 次,所有這些圖片都保存在兩個產品行中,請參見下表

誰能告訴我這里出了什么問題,在此先感謝
uj5u.com熱心網友回復:
您有兩個重復的輸入,只需洗掉一個:
<input type="text" name="pname[]">
<input type="file" name="pimage[]" multiple="multiple">
如果要添加多個資料,只需更改它們的名稱:
<input type="text" name="pname[]">
<input type="file" name="pimage0[]" multiple="multiple">
<input type="text" name="pname[]">
<input type="file" name="pimage1[]" multiple="multiple">
并記得在你的控制器中更新:
if (isset($_POST['addproduct'])) {
foreach ($this->input->post('pname') as $row => $value) {
$file_input_name = 'pimage' . $row;
$uploadImgData = [];
if (isset($_FILES[$file_input_name])) {
$ImageCount = count($_FILES[$file_input_name]['name']);
for ($i = 0; $i < $ImageCount; $i ) {
$_FILES['file']['name'] = $_FILES[$file_input_name]['name'][$i];
$_FILES['file']['type'] = $_FILES[$file_input_name]['type'][$i];
$_FILES['file']['tmp_name'] = $_FILES[$file_input_name]['tmp_name'][$i];
$_FILES['file']['error'] = $_FILES[$file_input_name]['error'][$i];
$_FILES['file']['size'] = $_FILES[$file_input_name]['size'][$i];
}
$uploadPath = './uploads/products/';
$config['upload_path'] = $uploadPath;
$config['allowed_types'] = 'jpg|jpeg|png|gif';
$this->load->library('upload', $config);
$this->upload->initialize($config);
if ($this->upload->do_upload('file')) {
$imageData = $this->upload->data();
$uploadImgData[] = $imageData['file_name'];
}
}
$pname = $this->input->post('pname')[$row];
$pimage = $uploadImgData;
$insertUserData = $this->category->addbulkproducts($pname, $pimage);
}
}
更新腳本以添加更多產品:
<script>
var loop_count = 1;
function add_more() {
loop_count ;
var html = '<div class="row" id="product_attr_' loop_count '">';
html = '<div class="form-group col-md-6"><label for="inputEmail4">Product Name</label><input type="text" name="pname[]" class="form-control" id="inputEmail4"></div><div class="form-group col-md-6"><label for="inputEmail4">Product Price</label><input type="text" name="pprice[]" class="form-control" id="inputEmail4"></div><div class="form-group col-md-6"><label for="inputEmail4">Offer Price</label><input type="text" name="offerprice[]" class="form-control" id="inputEmail4"></div><div class="form-group col-md-6"><label for="inputEmail4">Brand Name</label><input type="text" name="brandname[]" class="form-control" id="inputEmail4"></div><div class="form-group col-md-6"><label for="inputEmail4">PIN Codes</label><textarea name="pincode[]" class="form-control" id="exampleFormControlTextarea1" placeholder="500028, 500056, etc" rows="3"></textarea></div><div class="form-group col-md-6"><label for="inputEmail4">XS</label><input type="text" name="xssize[]" placeholder="Stock" class="form-control" id="inputEmail4"></div><div class="form-group col-md-6"><label for="inputEmail4">S</label><input type="text" name="ssize[]" class="form-control" placeholder="Stock" id="inputEmail4"></div><div class="form-group col-md-6"><label for="inputEmail4">M</label><input type="text" name="msize[]" class="form-control" placeholder="Stock" id="inputEmail4"></div><div class="form-group col-md-6"><label for="inputEmail4">L</label><input type="text" name="lsize[]" class="form-control" placeholder="Stock" id="inputEmail4"></div><div class="form-group col-md-6"><label for="inputEmail4">XL</label><input type="text" name="xlsize[]" class="form-control" placeholder="Stock" id="inputEmail4"></div><div class="form-group col-md-6"><label for="inputEmail4">XXL</label><input type="text" name="xxlsize[]" class="form-control" placeholder="Stock" id="inputEmail4"></div><div class="form-group col-md-6"><label for="inputEmail4">3XL</label><input type="text" name="3xlsize[]" class="form-control" placeholder="Stock" id="inputEmail4"></div><div class="form-group col-md-6"><label for="inputEmail4">Description</label><input type="text" name="description[]" class="form-control" placeholder="Description" id="inputEmail4"></div><div class="form-group col-md-6"><label for="inputEmail4">Material</label><input type="text" name="material[]" class="form-control" placeholder="Material" id="inputEmail4"></div><div class="form-group col-md-6"><label for="inputEmail4">SKU</label><input type="text" name="sku[]" class="form-control" placeholder="SKU" id="inputEmail4"></div><div class="form-group col-md-6"><label for="inputEmail4">Product Image</label><input type="file" id="myfile" class="form-control" name="pimage' (loop_count - 1) '[]" multiple="multiple"></div><div class="form-group col-md-6"><label for="inputPassword4">Status</label><select class="form-control" name="status[]" aria-label="Default select example"><option value="Active">Active</option><option value="Inactive">Inactive</option></select></div>';
html = '<div class="col-md-2"> <label <button type="button" class=" btn btn-danger " onclick=remove_more("' loop_count '")>REMOVE </button></div>';
jQuery('#product_attr_box').append(html)
}
function remove_more(loop_count) {
jQuery('#product_attr_' loop_count).remove();
}
</script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/431260.html
標籤:php sql 文件 代码点火器 codeigniter-3
上一篇:如何使用CodeIgniter4框架中的“IonAuth”身份驗證庫更新用戶
下一篇:阻止前端用戶從更改的網頁發送請求
