如何在codeigniter中将多个图像的隐藏输入值从视图发送到控制器?

时间:2018-04-09 05:17:44

标签: javascript php ajax codeigniter-3

我想将隐藏的图像名称值传递给控制器​​功能和

在我的视图updt-project-details.php文件中,在更新页面中显示多个图像并检查有效的扩展和显示图像,我还使用ajax和javascript删除图像,如果不存在,我只显示“没有文档发现“如果存在然后显示图像,像这样的代码,

<div class="row">
   <div class="col-sm-8">
       <input type="file" name="docs[]" multiple="multiple">
<?php $f = explode(',',$ans[0]->Proj_docs_path);
        foreach($f as $n){ if($n==''){ echo "<h4>No Documents Found.</h4>"; ?> <input type="hidden" name="p" value="<?php $arr=''; ?>"> <?php }else{ ?>      <a target="_blank" href="<?php echo base_url();?>images/project_docs/<?php echo $n; ?>">

        <img src="<?php echo base_url(); ?>images/<?php $azz = explode('.',$n);$ext = end($azz);if($ext=="pptx"||$ext=="ppt"){ ?>extensions_img/pptx.jpg<?php }elseif($ext=="pdf"){ ?>extensions_img/pdfimg.png <?php }elseif($ext=="docx"||$ext=="doc"){ ?>extensions_img/docximg.png <?php }elseif($ext=="xlsx"||$ext=="xls"){ ?>extensions_img/xlsx.png <?php }else{ ?>project_docs/<?php echo $n; }?>" style="margin:35px 25px;" height="100" width="100" class="img-thumbnail"><input type="hidden" name="p" value="<?php $arra = array(); $b = array_push($arra,$n);  ?>"></a>
        <a onclick="remove(<?php echo $m; ?> ,'<?php echo $n; ?>'); return confirm('Are You Sure to delete this!');" style="width:15px;height:15px;position: absolute;margin-left: -26px;margin-top: 10px;"><img src="<?php echo base_url(); ?>images/x.png" style="width:15px;height:15px;position: absolute;margin-left: -26px;margin-top: 10px;"></a>
        <?php } }?>
   </div>
</div>

我的控制器Welcome.php文件和更新功能

    public function projdetails_update($id)
{
$this->form_validation->set_rules('pcost','Project Cost','numeric');
if($this->form_validation->run()==false)
    {
        $d['m'] = $id;
        $this->load->view('header');
        $this->load->view('updt-project-details',$d);
        $this->load->view('footer');
    }
    else
    {
       $cost = $this->input->post('pcost');
       $imghid = $this->input->get('p');
       if($imghid='')
       {
           // then update null value to image which updated successfully.
       }
        else
        {
            $data = array('img_path'=>implode($this->input->get('p'));
        }
    }
      // then update query which performs correctly.
}

如何在数组中获取隐藏值并存储它然后更新它。 这是我的问题。

2 个答案:

答案 0 :(得分:0)

如果有多个图像并且您的输入标记名称被覆盖,请查看它究竟发生了什么。您需要提供动态image_name,即img标记名称或您正在存储图像名称的隐藏值。 这是你实现它的方式。

<?php
foreach($f as $key => $n)
{
    if($n=='')
    {
        //Your conditional code
    }
    ?>
    <input type="hidden" name="<?php echo 'p_'.$key;?>" value="<?php $arra = array(); $b = array_push($arra,$n);  ?>">
<?php
}
?>

你甚至可以在foreach中计算,但可能不需要。 您需要为隐藏输入提供动态名称。

之后在你的控制器中,你可以简单地执行此操作

<?php
public function projdetails_update($id)
{
$this->form_validation->set_rules('pcost','Project Cost','numeric');
if($this->form_validation->run()==false)
{
    $d['m'] = $id;
    $this->load->view('header');
    $this->load->view('updt-project-details',$d);
    $this->load->view('footer');
}
else
{
    print_r($_POST);
    //here you will get post variables of hidden values
}

答案 1 :(得分:0)

在updt-project-details.php文件代码中的

我改为

      $arra = array();
      foreach($f as $key=>$n)
      {
          if($n=='')
           {
                   // updated as null
           }
          else
         {
          <input type="hidden" name="<?php echo 'p_'.$key;?>" value="<?php echo $arra[] = $n;  ?>">   
         }

它存储值,我在控制器中获取它。