Load and save PHP/ MYSQL image

Asked

Viewed 1,100 times

1

This is a form that contains fields like CPF, RG... and a profile photo. I can add normally, but I can’t edit.

If I change any data other than the photo, example: CPF, works perfectly.

But if I want to change only the photo, the uploaded photo is sent to the server, but the image path is not being saved in the url_photo field.

That is, is not recording the new path from the database.

Can you help me?

HTML code part - PHP - CSS - JAVASCRIP

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-->

EDIT FUNCTION IN THE CONTROLLER (CODEIGNITER)

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');
			
			if(isset($_FILES['userfile']) && $_FILES['userfile']['size'] > 0):
			$foto = $this->do_upload();
			$file = $foto['file_name'];
			$url_foto = base_url().'assets/fotos/'.date('d-m-Y').'/'.$file;
			$data['url_foto'] = $url_foto;
			endif;

            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 IN THE CONTROLLER (CODEIGNITER)

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();
}
}

  • Have you checked whether the image path is returned ?

  • Already! It didn’t work! I know the error is in this code block.. ;if(isset($_FILES['userfile']) && $_FILES['userfile']['size'] > 0):&#xA;$foto = $this->do_upload();&#xA;$file = $foto['file_name'];&#xA;$url_foto = base_url().'assets/fotos/'.date('d-m-Y').'/'.$file;&#xA;$data['url_foto'] = $url_foto;&#xA;endif; But I don’t know how to fix.

  • see the return url of your $url_photo, and try to open it in your browser, remembering that thus Voce should include the absolute path of the image directory.

1 answer

1

Whenever you need to upload a file you should have the Multipart information on form.

html form Multipart

<form action="..." method="POST" enctype="multipart/form-data">
    ...
</form>

form codeigniter Multipart

<?php
    $atributosForm = array('name' => 'nomeFormulario', 'class' => 'form-horizontal');
    echo form_open_multipart(site_url('...'), $atributosForm); ?>
        ...
    <?php echo form_close(); ?>

Example of controller handling

<?php
$imagem = $this->input->post('imagem');

$config['upload_path'] = PATH_DAS_IMAGENS; //informar o caminho onde as imagens ficarão
$config['allowed_types'] = 'jpg|png';
$config['file_name'] = 'nome_da_imagens';
$config['max_size'] = '2048';
$config['remove_spaces'] = TRUE;

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

if ($this->upload->do_upload('imagem')) {
    //deu certo
} else {
    //deu errado
}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.