Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wagner fillio

Salvar dados do formulario sem obrigacao de atualizar a imagem

Recommended Posts

Tenho um formulario de cadastro e este formulario tem uma imagem de perfil do usuario cadastrado.
O insert e update da imagem estao funcionando perfeitamente.
O problema esta em quando atualizo qualquer dado que não seja a imagem, o sistema nao salva, retornando erro de upload de imagem.
O formulario nao esta aceitando o input file vazio e quer atualizar a imagem de qualquer forma.
O que eu quero: Editar e Salvar CPF ou NOME. Manter IMAGEM que ja esta cadastrado sem obrigacao de altera-la

Parte do código HTML - PHP - CSS - JAVASCRIPT

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

CSS

#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;
}

SCRIPT

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

FUNÇÃO EDITAR NO 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');

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

FUNÇÃO UPLOAD NO 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();
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei uma nova função #editarFoto e não deu.
Tambem tentei incluir um if $url_foto != null, passa o valor do input file para o array, else Não passa o valor para o array; mas tambem não deu.

Tem algum sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendo muito bem o CodeIgniter, apesar de ser um pouco parecido com o Laravel.
No Laravel, para fazer update desse tipo, eu valido cada elemento do array de Request.
Pelo que vi no seu código, o input da imagem está denominada como "userfile", mas não encontrei nenhuma referencia à ele na função editar nem no do_upload.
Uma maneira de tentar contornar isso, é fazendo uma simples condição, se o usuário não entrar com nenhum arquivo no input file, retornará vazio no post e não fará as operações da condição. Usando isset também funcionaria. Exemplo:

/* Seu código, ou quase ele :X */
public function editar(){
     if($this->input->post('userfile')){
          /* Aqui você faz a validação básica, como saber se o usuário enviou o formato válido, dimensões, etc.
          /* E ainda aqui voce faz o upload da imagem e atualiza o campo no banco de dados. */
     }
}

/* No Laravel ficaria basicamente Assim */
public function editar(Request $request){
     $usuario = ModelQualquer::find(idDoUsuario); /* Poderia capturar esses dados por Sessão, mas não sei se o CodeIgniter tem essa funcionalidade */
     if($request->imagem){
          /* Upload do Arquivo... */
          $usuario->imagem =  public_Path()."/...";
     }
     $usuario->save();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.