Ir para conteúdo

Arquivado

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

josenilson

[Resolvido] gravando no banco sem mask

Recommended Posts

Olá pessoal,  estou com um modulo onde consta os inputs cpf, cep e telefone com mascara, porem quando gravo em banco gostaria de gravar sem as mask principalmente o cpf por user como query no futuro para os filtros de pesquisa , como resolvo isso ?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode usar o str_replace() pra remover caracteres específicos:

$cep = str_replace("-", "", "00000-000"); // 00000000
$cpf = str_replace([".","-"], "", "000000000-00"); // 00000000000

Pode usar o preg_replace() também:

$cep = preg_replace("/[^\d]+/", "", "00000-000"); // 00000000
$cpf = preg_replace("/[^\d]+/", "", "000.000.000-00"); // 00000000000

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então estou fazendo assim, para receber os dados eu armazeno em um arrey com o em uma variável data 

$data = filter_input_array(INPUT_POST, FILTER_DEFAULT);

var_dump($data);

como vou aplicar o str_replace somente no input cpf ? 

no casa seria nesse parâmetro $data['cpf'];

 

eu aplico  o str_replace na variável ou no método onde estuo gravando os dados ?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

abaixo o código onde eu pego os dados e com o objeto da classe admin cliente eu gravo ono banco 

$data = filter_input_array(INPUT_POST, FILTER_DEFAULT);
if (!empty($data['SendPostForm'])):
    unset($data['SendPostForm']);

    require '_models/AdminClientes.class.php';
    $cadastra = new AdminClientes;
    $cadastra->ExeCreate($data);

    if (!$cadastra->getResult()):
        WSErro($cadastra->getError()[0], $cadastra->getError()[1]);
    endif;
else:

var_dump($data);
endif;

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem algum lugar aí na sua aplicação onde tem as regras do filter_input_array() pra fazer a filtragem. Por aí também dá pra fazer, porém vai ser remendo/gambiarra.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Agora, BrunoBit disse:

Tem algum lugar aí na sua aplicação onde tem as regras do filter_input_array() pra fazer a filtragem. Por aí também dá pra fazer, porém vai ser remendo/gambiarra.

 

Então não tem como colocar essa particularidade do cpf sem da mask no seu método setdata na class ?

 

 private function setData() {
        $this->Data = array_map('strip_tags', $this->Data);
        $this->Data = array_map('trim', $this->Data);
 
        $this->Data['cpf'] = ($this->Data['cpf']);
    
    }

    //Cadastra a jornada no banco!
    private function Create() {

        $Create = new Create;
        $Create->ExeCreate(self::Entity, $this->Data);
        if ($Create->getResult()):
            $this->Result = $Create->getResult();
        endif;
    }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por joaopedropeterle
      Boa tarde pessoal!
       
      Preciso fazer os valores digitados no campo do formulário serem escritos de forma inversa, pois se trata de dinheiro, nada do que fiz deu certo até agora... meu código está assim:
       
      var valor = $("#valor"); valor.keyup(() => { valor.val(VMasker.toPattern(valor.val(), "999.999.999,99", {reverse: true})); }) #valor é a ID do campo onde será inserido... Não sei se fui bem claro, sou apenas iniciante...rsrs
    • Por matmper
      Eu sempre tive problemas em utilizar máscaras (mask.js) em campos que podem ser CPF ou CNPJ, então baseado em algumas soluções, fiz algumas adaptações para que o mesmo suporte ambos dados no mesmo campo, e segue a solução.
       
      Realize o download do mask plugin, e chame o js na página que recebera a máscara.
       
      jQuery Maks Plugin: https://github.com/igorescobar/jQuery-Mask-Plugin
       
      <script src="assets/js/jquery.mask.min.js"></script>  
      Adicione a função no seu main.js ou no script de sua página, sempre após o jQuery e o jQuery Mask
       
      // jQuery Mask Plugin v1.14.11 // github.com/igorescobar/jQuery-Mask-Plugin var cpfMascara = function (val) { return val.replace(/\D/g, '').length > 11 ? '00.000.000/0000-00' : '000.000.000-009'; }, cpfOptions = { onKeyPress: function(val, e, field, options) { field.mask(cpfMascara.apply({}, arguments), options); } }; $('.mascara-cpfcnpj').mask(cpfMascara, cpfOptions);  
      Agora, basta adicionar a classe .mascara-cpfcnpj, no campo desejado, e o mesmo será apto a receber CPF ou CNPJ.
       
      <input name="cpfcnpj" class="mascara-cpfcnpj"/>  
      Pronto!
    • Por BrunoBit
      Fala rapaziada, tudo joia?
      Gostaria saber de acordo com a experiência de vocês, como faço pra fazer uma "mask" do tipo preço semelhante ao do pagseguro por exemplo?
      Conforme vamos colocando o preço a input vai formatando o preço em tempo real dentro da input, exemplo:
      49.99
      499.99
      1499.99
       
      Desde já agradeço a orientação pessoal, abração e fiquem com Deus.
    • Por josenilson
      olá ,  por favor,  estou tentando fazer um dinamismo com um select option e um input, onde ao selecionar um determinado valor no select,  o input dinamicamente atribui a sua respectiva mascara.
       
      Bem resumo, o usuário seleciona no select um banco (BRASIL, BRADESCO, ETC) o input Agencia atribui a devida mascara  de acordo com o banco Exemplo: banco do brasil a  mascara agencia seria 0000-0,  banco  Bradesco  mascara 0000, e assim  nos demais bancos,  eu tentei fazer algo do tipo, mas meu conhecimento e muito pouco com relação  a isso,  assim peço a colaboração de todos muito obrigado. vlw galera. 
       
      OBS: Esse é o script que estou tentando fazer dar certo. 
       
      <select style="width:200px;font-size: 13px" name="banco" id="banco" onchange="escolha()" required class="form-control"> <option value="">BANCO</option> <option value="BRASIL">BRASIL</option> <option value="BRADESCO">BRADESCO</option> <option value="CAIXA_ECONOMICA">CAIXA ECONOMICA</option> <option value="SANTANDER">SANTANDER</option> <option value="ITAU">ITAU</option> </select> <br> <input style="width:167px;font-size:13px;" type="text" name="agencia" id="agencia" class="form-control" placeholder="AGENCIA" > <script type="text/javascript"> function escolha() { $(document).ready(function(){ $("#banco").change(function(){ var banco = $(this).val(); if(banco == 'BRASIL'){ $('#agencia').mask('0000-00'); }else if(banco == 'BRADESCO'){ //assim por diante } }) } </script>  
       
    • Por joaowebdesigner
      Tenho essa função:
      $("#telephone").mask("(99) 9999-9999?9"); $("#telephone").blur(function(event) {     if($(this).val().length == 15){       $('#telephone').mask('(99) 99999-999?9');     } else {       $('#telephone').mask('(99) 9999-9999?9');     } }); O que ocorre: quando o campo já está pegando um valor que vem do database, se o telefone já tiver 9 dígitos, o mask é aplicado como se o número fosse de 8 dígitos, já que a função acima só funciona no evento "blur", ou seja, a pessoa teria que clicar dentro do input e depois clicar em outro input pra que a máscara fosse aplicada.
       
      Como posso fazer pra identificar se o número que vem do db já tem o nono dígito - total de 15 dígitos incluindo espaços e parênteses do DDD - e então aplicar a máscara logo que a página é carregada, mas mantendo o funcionamento da função também no "blur"?
       
      Valeu!
×

Informação importante

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