【问题标题】:In code igniter multiple image update在代码中点燃多个图像更新
【发布时间】:2017-04-09 11:11:24
【问题描述】:

我在代码点火器中上传多个图像相同的代码用于更新多个图像但在更新时我更改名称我不更改图像然后单击确定按钮名称是更新但图像丢失但我更改了仅更新的图像..为什么?

我的控制器

 function update_products() 
     { 
    $id = $this->input->post('id');
    $this->load->library('upload');
    $dataInfo = array();
    $files = $_FILES;
    $cpt = count($_FILES['userfile']['name']);
    for($i=0; $i<$cpt; $i++)
    {           
        $_FILES['userfile']['name']= $files['userfile']['name'][$i];
        $_FILES['userfile']['type']= $files['userfile']['type'][$i];
        $_FILES['userfile']['tmp_name']= $files['userfile']['tmp_name'][$i];
        $_FILES['userfile']['error']= $files['userfile']['error'][$i];
        $_FILES['userfile']['size']= $files['userfile']['size'][$i];    

        $this->upload->initialize($this->set_upload_options());
        $this->upload->do_upload();
       
           $dataInfo[] = $this->upload->data();

    }
   $data = array(
        
         'name' => $this->input->post('name'),
         'prod_image' => $dataInfo[0]['file_name'],
          'prod_image1' => $dataInfo[1]['file_name'],
          'prod_image2' => $dataInfo[2]['file_name'],
         'upadted_time' => date('Y-m-d H:i:s')  
      );
   
    $stock = array(
     'discount' => $this->input->post('discount'),
    );
                 $this->db->where('prod_id', $id);
                $this->db->update('tbl_products', $data);
             $this->db->where('prods_id', $id);
             $this->db->update('otc_product_discount', $stock);
        
                 $this->session->set_flashdata('msg','<div class="alert alert-success text-center">You are Successfully updated!</div>');
      redirect('index.php/admin/display_product_list');
                 
  }         
    }  

我的看法

 <label for="type">Product Image</label>
<img src="<?php echo base_url("./resources/images/products/");  if($row->prod_image) echo $row->prod_image; else echo "no-img.jpg"; ?>" alt="" height="50" width="50"/>
<input type="file" id="med_img" class="file_upload"  name="userfile[]" value="<?php  echo $row->prod_image; ?>" /> 

<label for="type">Product Image2</label>
<img src="<?php echo base_url("./resources/images/products/");  if($row->prod_image1) echo $row->prod_image1; else echo "no-img.jpg"; ?>" alt="" height="50" width="50"/>
<input type="file" id="med_img" class="file_upload"  name="userfile[]" value="<?php  echo $row->prod_image1; ?>" />
<label for="type">Product Image3</label>
<img src="<?php echo base_url("./resources/images/products/");  if($row->prod_image2) echo $row->prod_image2; else echo "no-img.jpg"; ?>" alt="" height="50" width="50"/>
                  <input type="file" id="med_img" class="file_upload"  name="userfile[]" value="<?php  echo $row->prod_image2; ?>" />
            

上传功能是

private function set_upload_options()
{   
    //upload an image options
    $config = array();
    $config['upload_path'] = './resources/images/products/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size']      = '0';
    $config['overwrite']     = FALSE;

    return $config;
}

【问题讨论】:

  • nameupadted_time 字段已正确更新。对吗?
  • 是的。图像丢失我不改变图像
  • 有什么帮助吗? @Razib Al Mamun

标签: php arrays codeigniter


【解决方案1】:

我认为需要像这样在您的控制器中单独上传。

function update_products() 
{ 
    $id = $this->input->post('id');
    $this->load->library('upload');
    $this->upload->initialize($this->set_upload_options());

    $data = array();

    if($this->upload->do_upload('userfile')) {   
        $dataInfo = $this->upload->data();
        $data['prod_image'] = $dataInfo['file_name'];
    }

    if($this->upload->do_upload('userfile1')) {   
        $dataInfo = $this->upload->data();
        $data['prod_image1'] = $dataInfo['file_name'];
    }

    if($this->upload->do_upload('userfile2')) {   
        $dataInfo = $this->upload->data();
        $data['prod_image2'] = $dataInfo['file_name'];
    }   

    $data['name'] = $this->input->post('name'),
    $data['upadted_time'] = date('Y-m-d H:i:s')  

    $stock = array(
    'discount' => $this->input->post('discount'),
    );

    $this->db->where('prod_id', $id);
    $this->db->update('tbl_products', $data);

    $this->db->where('prods_id', $id);
    $this->db->update('otc_product_discount', $stock);

    $this->session->set_flashdata('msg','<div class="alert alert-success text-center">You are Successfully updated!</div>');
    redirect('index.php/admin/display_product_list');
} 

更改FIlE输入字段名称userfileuserfile1userfile2如下:

<input type="file" id="med_img" class="file_upload"  name="userfile"/>
<input type="file" id="med_img" class="file_upload"  name="userfile1"/>
<input type="file" id="med_img" class="file_upload"  name="userfile2"/>

【讨论】:

  • 视图部分改成这样
  • 在视图部分仅更改输入字段
  • 现在情况如何?
  • 现在图像没有更新但没有任何变化,我们点击确定按钮图像仍然在这里..
  • 上传 1 或 3 张图片然后查看
猜你喜欢
  • 1970-01-01
  • 2019-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
相关资源
最近更新 更多