Save form data without updating the image

1

I have a registration form and this form has a registered user profile image.

The insert and update of the image are working perfectly.

The problem is when I update any data other than the image, the system does not save, returning image upload error.

The form is not accepting the empty input file and wants to refresh the image anyway.

What I want: Edit and Save CPF or NAME. Keep IMAGE that is already registered without obligation to change it

Part of HTML - PHP - CSS - JAVASCRIPT

function preview(fileInput) {
    var files = fileInput.files;
    for (var i = 0; i < files.length; i++) {           
        var file = files[i];
        var imageType = /image.*/;     
        if (!file.type.match(imageType)) {
            continue;
        }           
        var img=document.getElementById("avatar");            
        img.file = file;    
        var reader = new FileReader();
        reader.onload = (function(aImg) { 
            return function(e) { 
                aImg.src = e.target.result; 
            }; 
        })(img);
        reader.readAsDataURL(file);
    }    
}
#avatar {
    width: 180px;
    height: 180px;
    background-position: center center;
    background-size: cover;	
	border-radius: 0;
	-moz-border-radius: 0px;
	-webkit-border-radius: 0px;
    -webkit-box-shadow: 0 0 1px 1px rgba(0, 0, 0, .3);
    display: inline-block;
}
<div class="collapse in accordion-body" id="collapseGOne"><!--Dados Pessoais-->
<div class="widget-content ">
    <table>
        <tbody>
        <tr>
        <td style="width: 14%">
            <?php if (!empty($result->url_foto)) { ?>
                <img id="avatar" src="<?php echo $result->url_foto; ?>" >
            <?php }
            else
            {
                return;
            }
            ?>
            </div>
        </td>
<td>
    <div class="span12" style="padding: 1%">
        <div class="span4">
        <?php echo form_hidden('idColaboradores',$result->idColaboradores) ?>
            <label for="nome">Nome<span class="required">*</span></label>
            <input id="nome" class="span12" type="text" name="nome" value="<?php echo $result->nome; ?>"  />
        </div>
        <div class="span2">
            <label for="sexo">Sexo<span class="required">*</span></label>
            <select name="sexo" id="sexo" class="span12" value="">
                <option <?php if($result->sexo == 'Masculino'){echo 'selected';} ?> value="Masculino">Masculino</option>
                 <option <?php if($result->sexo == 'Feminino'){echo 'selected';} ?> value="Feminino">Feminino</option>
            </select>
        </div>
    </div>
    <div class="span12" style="padding: 1%; margin-left: 0">
        <div class="span2">
            <label for="cpf">CPF<span class="required">*</span></label>
            <input id="cpf" class="span12 cpf" type="text" name="cpf" placeholder="000.000.000-00" value="<?php echo $result->cpf; ?>"  />
        </div>
        <div class="span2">
            <label for="rg">RG<span class="required">*</span></label>
            <input id="rg" class="span12" type="text" name="rg" value="<?php echo $result->rg; ?>"  />
        </div>
        <div class="span2">
            <label for="data_nascimento">Data Nascimento<span class="required">*</span></label>
             <input id="data_nascimento" class="span12" type="date" name="data_nascimento" value="<?php echo $result->data_nascimento; ?>"  />
        </div>
    </div>
</td>
         </tr>
        </tbody>
    </table>
</div>

<div class=""><!--input Foto-->
    <label for="" class="control-label"><span class="required">Foto*</span></label>
    <div class="controls">
        <input type="file" onchange="preview(this)" name="userfile" /> (.png, .jpg, .jpeg)
    </div>
</div><!--input Foto-->
    
</div><!--Dados Pessoais-->

Part of the Controller code - PHP

function editar() {

        if(!$this->permission->checkPermission($this->session->userdata('permissao'),'eColaborador')){
           $this->session->set_flashdata('error','Você não tem permissão para editar colaboradores.');
           redirect(base_url());
        }
        $this->load->library('form_validation');
        $this->data['custom_error'] = '';

        if ($this->form_validation->run('colaboradores') == false) {
            $this->data['custom_error'] = (validation_errors() ? '<div class="form_error">' . validation_errors() . '</div>' : false);
        } else {
            $data_admissao = $this->input->post('data_admissao');
			$data_demissao = $this->input->post('data_demissao');
			
			$foto = $this->do_upload();

        	$file = $foto['file_name'];
        	$url_foto = base_url().'assets/fotos/'.date('d-m-Y').'/'.$file;

            try {

            }catch (Exception $e) {
               $data_admissao = date('Y/m/d');
			   $data_demissao = date('Y/m/d');
			   $data_inicio_aviso = date('Y/m/d');
			   $data_fim_aviso = date('Y/m/d');
			   $data_inicio_ferias = date('Y/m/d');
			   $data_fim_ferias = date('Y/m/d');
			   $data_abandono1 = date('Y/m/d');
			   $data_abandono15 = date('Y/m/d');
			   $data_abandono28 = date('Y/m/d');
			   $data_inicio_previdencia = date('Y/m/d');
			   $data_fim_previdencia = date('Y/m/d');
			   $data_inicio_justica_a = date('Y/m/d');
			   $data_fim_justica_a = date('Y/m/d');
			   $data_inicio_justica_i = date('Y/m/d');
			   $data_fim_justica_i = date('Y/m/d');
			   $data_inicio_licasamento = date('Y/m/d');
			   $data_fim_licasamento = date('Y/m/d');
			   $data_inicio_suspensao = date('Y/m/d');
			   $data_fim_suspensao = date('Y/m/d');
            }
		
            $data = array(
                'nome' => $this->input->post('nome'),
                'sexo' => $this->input->post('sexo'),
				'cpf' => $this->input->post('cpf'),
				'rg' => $this->input->post('rg'),
				'url_foto' => $url_foto,
				'data_nascimento' => $this->input->post('data_nascimento'),
                'rua' => $this->input->post('rua'),
                'numero' => $this->input->post('numero'),
				'complemento' => $this->input->post('complemento'),
                'bairro' => $this->input->post('bairro'),
                'cep' => $this->input->post('cep'),
                'estado' => $this->input->post('estado'),
                'cidade' => $this->input->post('cidade'),
				'telefone' => $this->input->post('telefone'),
                'celular' => $this->input->post('celular'),
                'email' => $this->input->post('email'),
				'ctps'=> $this->input->post('ctps'),
				'serie' => $this->input->post('serie'),
				'uf' => $this->input->post('uf'),
				'pis' => $this->input->post('pis'),	
				'salario' => $this->input->post('salario'),
				'banco' => $this->input->post('banco'),
				'agencia' => $this->input->post('agencia'),
				'conta' => $this->input->post('conta'),
				'jornada_trabalho'=> $this->input->post('jornada_trabalho'),
				'horario_trabalho' => $this->input->post('horario_trabalho'),
				'data_admissao' => $this->input->post('data_admissao'),
				'departamento' => $this->input->post('departamento'),
				'cargo' => $this->input->post('cargo'),
				'situacao' => $this->input->post('situacao'),
				'data_demissao' => $this->input->post('data_demissao'),
				'tipo_demissao' => $this->input->post('tipo_demissao'),
				'motivo_demissao' => $this->input->post('motivo_demissao'),
				'data_inicio_aviso' => $this->input->post('data_inicio_aviso'),
				'data_fim_aviso' => $this->input->post('data_fim_aviso'),
				'data_inicio_ferias' => $this->input->post('data_inicio_ferias'),
				'data_fim_ferias' => $this->input->post('data_fim_ferias'),
				'data_abandono1' => $this->input->post('data_abandono1'),
				'data_abandono15' => $this->input->post('data_abandono15'),
				'data_abandono28' => $this->input->post('data_abandono28'),
				'data_inicio_previdencia' => $this->input->post('data_inicio_previdencia'),
				'data_fim_previdencia' => $this->input->post('data_fim_previdencia'),
				'data_inicio_justica_a' => $this->input->post('data_inicio_justica_a'),
				'data_fim_justica_a' => $this->input->post('data_fim_justica_a'),
				'data_inicio_justica_i' => $this->input->post('data_inicio_justica_i'),
				'data_inicio_licasamento' => $this->input->post('data_inicio_licasamento'),
				'data_fim_licasamento' => $this->input->post('data_fim_licasamento'),
				'data_inicio_limaternidade' => $this->input->post('data_inicio_limaternidade'),
				'data_fim_limaternidade' => $this->input->post('data_fim_limaternidade'),
				'data_inicio_suspensao' => $this->input->post('data_inicio_suspensao'),
				'data_fim_suspensao' => $this->input->post('data_fim_suspensao'),
				'observacao' => $this->input->post('observacao'),
				'usuario_alteracao' => $this->input->post('usuario_alteracao'),
				'data_alteracao' => date('Y-m-d')
            );

            if ($this->colaboradores_model->edit('colaboradores', $data, 'idColaboradores', $this->input->post('idColaboradores')) == TRUE) {
                $this->session->set_flashdata('success','Colaborador editado com sucesso!');
                redirect(base_url() . 'index.php/colaboradores/editar/'.$this->input->post('idColaboradores'));
            } else {
                $this->data['custom_error'] = '<div class="form_error"><p>An Error Occured</p></div>';
            }
        }
		
		$this->load->model('departamentos_model');
        $this->data['departamentos'] = $this->departamentos_model->getActive('departamentos','departamentos.idDepartamentos,departamentos.departamento');
		$this->load->model('cargos_model');
        $this->data['cargos'] = $this->departamentos_model->getActive('cargos','cargos.idCargos,cargos.cargo');
		
		$this->data['result'] = $this->colaboradores_model->getById($this->uri->segment(3));

        $this->data['view'] = 'colaboradores/editarColaborador';
        $this->load->view('tema/topo', $this->data);
     
    }

Upload function

		    public function do_upload(){

        if(!$this->permission->checkPermission($this->session->userdata('permissao'),'vColaborador')){
          $this->session->set_flashdata('error','Você não tem permissão para adicionar colaboradores.');
          redirect(base_url());
        }
	
    	$date = date('d-m-Y');

		$config['upload_path'] = './assets/fotos/'.$date;
	    $config['allowed_types'] = 'txt|jpg|jpeg|gif|png|pdf|PDF|JPG|JPEG|GIF|PNG';
	    $config['max_size']     = 0;
	    $config['max_width']  = '3000';
	    $config['max_height']  = '2000';
	    $config['encrypt_name'] = true;


		if (!is_dir('./assets/fotos/'.$date)) {

			mkdir('./assets/fotos/' . $date, 0777, TRUE);

		}

		$this->load->library('upload', $config);

		if ( ! $this->upload->do_upload())
		{
			$error = array('error' => $this->upload->display_errors());

			$this->session->set_flashdata('error','Erro ao fazer upload do arquivo, verifique se a extensão do arquivo é permitida.');
            redirect(base_url() . 'index.php/colaboradores/adicionar/');
		}
		else
		{
			//$data = array('upload_data' => $this->upload->data());
			return $this->upload->data();
		}
	}
    
asked by anonymous 27.04.2016 / 18:35

2 answers

0

I always put it this way:

if (!empty($_FILES['userfile']['name'])) {
     //definicoes do UPLOAD aqui
}

That way, it only uploads if I upload a file

    
04.05.2016 / 19:06
0

Separate the image insertion into the database and only perform the update if the user has uploaded something.

    
27.04.2016 / 19:04