Как обновить данные формы без загрузки изображения снова, используя jquery ajax в codeigniter? - PullRequest
0 голосов
/ 22 января 2019

просмотр:

<script>
    $(document).ready(function(){
        $("#submit").click(function(e){
            e.preventDefault();
            company_name = $("#company_name").val();
            var fileInputs = $('#company_logo');
            var formData = new FormData();
            $.each(fileInputs, function(i,fileInput){
                if( fileInput.files.length > 0 )
                {
                    $.each(fileInput.files, function(k,file){
                        formData.append('company_logo[]', file);
                    });
                }
            });
            formData.append('company_name', company_name);
            $.ajax({
                type:"POST",
                data:formData,
                processData: false,
                contentType: false,
                url:"<?php echo base_url(); ?>company_details",
                success:function(data){
                    $("#success_company").html(data);
                }
            });
        });
    });
</script>

контроллер:

public function company_details()
{
    $this->db->select('company_name');
    $this->db->from('detail');
    $where = "company_name='".$this->input->post('company_name')."'";
    $this->db->where($where);
    $q = $this->db->get();
    if($q->num_rows() > 0)
    { 
        $dataInfo = array();
        $files = $_FILES;
        if($files!='')
        {
            $cpt = count($_FILES['company_logo']['name']);
            for($i=0; $i<$cpt; $i++)
            {           
                $_FILES['company_logo']['name']= $files['company_logo']['name'][$i];
                $_FILES['company_logo']['type']= $files['company_logo']['type'][$i];
                $_FILES['company_logo']['tmp_name']= $files['company_logo']['tmp_name'][$i];
                $_FILES['company_logo']['error']= $files['company_logo']['error'][$i];
                $_FILES['company_logo']['size']= $files['company_logo']['size'][$i];
                $this->upload->initialize($this->set_upload_options());
                $this->upload->do_upload('company_logo');
                $upload_data = $this->upload->data();
                $name_array[] = $upload_data['file_name'];
                $fileName = $upload_data['file_name'];
                $images[] = $fileName;
            }

            $fileName = $images;
            $data = array(
                'company_name' => $this->input->post('company_name'),
                'company_logo' => implode(",",$fileName),
            );
            $where = "candidate_id='".$this->input->post('cid')."'";
            $this->db->where($where);
            $sql = $this->db->update('detail',$data);
            if($sql == true)
            {
                echo '<p>Company Detail Added</p>';
            }
            else
            {
                echo '<p>Unable to Proceed!</p>';
            }
        }
        else
        {
            $cpt = count($_FILES['company_logo']['name']);
            for($i=0; $i<$cpt; $i++)
            {           
                $_FILES['company_logo']['name']= $files['company_logo']['name'][$i];
                $_FILES['company_logo']['type']= $files['company_logo']['type'][$i];
                $_FILES['company_logo']['tmp_name']= $files['company_logo']['tmp_name'][$i];
                $_FILES['company_logo']['error']= $files['company_logo']['error'][$i];
                $_FILES['company_logo']['size']= $files['company_logo']['size'][$i];
                $this->upload->initialize($this->set_upload_options());
                $this->upload->do_upload('company_logo');
                $upload_data = $this->upload->data();
                $name_array[] = $upload_data['file_name'];
                $fileName = $upload_data['file_name'];
                $images[] = $fileName;
            }

            $fileName = $images;
            $data = array(
                'company_name' => $this->input->post('company_name'),
            );
            $where = "candidate_id='".$this->input->post('cid')."'";
            $this->db->where($where);
            $sql = $this->db->update('detail',$data);
            if($sql == true)
            {
                echo '<p>Company Detail Added</p>';
            }
            else
            {
                echo '<p>Unable to Proceed!</p>';
            }
        }
    }
    else
    {
        $dataInfo = array();
        $files = $_FILES;
        $cpt = count($_FILES['company_logo']['name']);
        for($i=0; $i<$cpt; $i++)
        {           
            $_FILES['company_logo']['name']= $files['company_logo']['name'][$i];
            $_FILES['company_logo']['type']= $files['company_logo']['type'][$i];
            $_FILES['company_logo']['tmp_name']= $files['company_logo']['tmp_name'][$i];
            $_FILES['company_logo']['error']= $files['company_logo']['error'][$i];
            $_FILES['company_logo']['size']= $files['company_logo']['size'][$i];
            $this->upload->initialize($this->set_upload_options());
            $this->upload->do_upload('company_logo');
            $upload_data = $this->upload->data();
            $name_array[] = $upload_data['file_name'];
            $fileName = $upload_data['file_name'];
            $images[] = $fileName;
        }

        $fileName = $images;
        $data = array(
            'company_name' => $this->input->post('company_name'),
            'company_logo' => implode(",",$fileName)
        );
        $sql = $this->db->insert('company_detail',$data);
        if($sql == true)
        {
            echo '<p>Company Detail Added</p>';
        }
        else
        {
            echo '<p>Unable to Proceed!</p>';
        }
    }
}

В этом коде я загружаю несколько изображений, нажав на кнопку отправки.Теперь, что происходит, когда я загружаю company_logo в первый раз, когда он успешно вставляет данные в мою базу данных.Но когда я обновляю информацию.без изменений company_logo изображение показывает ошибку, т.е.

первая ошибка:

Message: Undefined index: company_logo

вторая ошибка:

Message: count(): Parameter must be an array or an object that implements Countable

Итак, как я могу решить эту проблему?Пожалуйста, помогите мне

Спасибо

1 Ответ

0 голосов
/ 22 января 2019

Сначала в части if удалить

 if($files!='') // put here if(count($files) > 0)

и удалите код загрузки изображения в другой части без использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...