Nem sempre a solução mais 'fácil' é a mais higiênica.  

Formatos existem para que sejam usados, realmente não faz sentido preencher um 
campo com um numero inteiro, quando deveria ser decimal…  

No Brasil, temos a virgula para separar os decimais, e nos EUA (ou em inglês) 
usa-se ponto. Fazer uma pequena função para 'acertar' o formato na hora de 
exibir pro usuário ou gravar no banco, não é algo que vá comprometer a 
performance da aplicação (Ou força o usuário a entrar o dado no formato do 
banco).  

Se a sua função vai usar um regex ou se vai usar um str_replace, vai de vc… 
acho que talvez o regex consuma um zilhonésimo a menos de processamento/memória…

Mas o caminho é esse mesmo…

RA

--  
Rafael Apocalypse


On Tuesday, April 17, 2012 at 3:17 PM, Rafael V. de Oliveira wrote:

> Com todo o respeito, mas eu não concordo. Se é um decimal, guarde como 
> decimal. Se é inteiro, guarde como inteiro. O próximo "desgraçado" que pegar 
> no teu programa não tem que adivinhar que 299 significa 2,99 e não 299,00. 
> Fico indignado quando vejo sistemas assim. Por exemplo, programadores que 
> convertem datas em inteiro. Agora eu tenho que escrever muito mais sql para 
> saber quais são os registros da data tal quando eu poderia fazer WHERE data 
> <= "2012-04-17"  
>  
> O tratamento para o visitante de float/double é easy, basta usar um 
> number_format e já está. Agora do visitante para o banco de dados, tens de 
> trocar a vírgula por ponto. Já tens aí várias soluções.
>  
> Em 17/04/2012, às 18:46, Leonardo Grillo escreveu:
>  
> > pq nao salva o valor como inteiro?
> > 2,99 = 299
> > 1.000,00 = 100000
> > de qualquer forma quando vc for mostrar para o cliente o valor, vc vai ter
> > que trata-lo novamente mesmo
> >  
> > Leonardo Grillo
> > Soluções para web
> >  
> > 81 88373799
> > msg: [email protected] (http://web.com.br)
> > gtalk: [email protected] (http://web.com.br)
> > skype: grilloleo11
> >  
> >  
> >  
> > Em 17 de abril de 2012 11:16, Rafael V. de Oliveira 
> > <[email protected] (mailto:[email protected])
> > > escreveu:
> >  
> >  
> > > O preg_replace é mais rápido na questão performance do que o
> > > str_replace(',', '.', ……) ?? É mesmo uma pergunta, não uso muito o
> > > preg_replace.
> > >  
> > > De qualquer maneira, acho que não tens como fugir disso. Tenho a mesma
> > > situação nos campos de data.
> > > No "front-end", o visitante ou digita a data no padrão dd/mm/aaaa ou a
> > > seleciona em um calendário (JQuery UI Datepicker). Ao inserir no banco em
> > > um campo do tipo DATE, preciso converter as datas para o formato 
> > > aaaa-mm-dd.
> > >  
> > > Eu acabo por fazer um explode:
> > > $data = '17/04/2012';
> > > $data = explode('/', $data);
> > > list($dia, $mes, $ano) = $data;
> > >  
> > > return $ano . '-' . $mes . '-' . $dia;
> > >  
> > >  
> > >  
> > >  
> > > Em 17/04/2012, às 14:21, Elton Schivei Costa escreveu:
> > >  
> > > > Sim tem,
> > > >  
> > > > Exemplo:
> > > >  
> > > > $valorForm = "2.752,99";
> > > >  
> > > > $valor = preg_replace('/[^0-9]/', '', $valorForm) / 100;
> > > >  
> > > > echo $valor; // imprime 2752.99
> > > >  
> > > >  
> > > > Atenciosamente.
> > > >  
> > > > Elton Schivei Costa
> > > > Analista de Sistemas.
> > > >  
> > > >  
> > > >  
> > > >  
> > > > Em 17 de abril de 2012 10:16, André da Silva Severino <
> > > > [email protected] (mailto:[email protected])> 
> > > > escreveu:
> > > >  
> > > > > Bom dia pessoal, desculpe o OFF.
> > > > >  
> > > > > Estou utilizando 2 campos no MySQL do tipo DOUBLE(10,2).
> > > > >  
> > > > > Bom, quando envio os dados através do formulário eu mando no seguinte
> > > > > padrão:
> > > > >  
> > > > > 0.000,00
> > > > >  
> > > > > No CI eu faço a seguinte conversão:
> > > > >  
> > > > > function moeda( $valor )
> > > > > {
> > > > > $source = array('.', ',');
> > > > > $replace = array('', '.');
> > > > >  
> > > > > $valor = str_replace($source, $replace, $valor);
> > > > > return $valor;
> > > > > }
> > > > >  
> > > > > $data['campo'] = moeda( $this->input->post('inp_valorUnitario') );
> > > > >  
> > > > > Tem alguma forma de fazer, sem ser assim ? Eu tentei tipar o dado 
> > > > > usando
> > > > > (double)$this->input->post('inp_valorUnitario'), mas não deu certo, no
> > > > >  
> > > >  
> > > >  
> > >  
> > > caso
> > > > > de 2500,00 ele transformava para 2.5 (2,50).
> > > > >  
> > > > > De que forma vocês fazem ?
> > > > >  
> > > > > Obrigado
> > > > >  
> > > > >  
> > > > > --
> > > > >  
> > > > > *
> > > ---------------------------------------------------------------------------------------------------------------------------
> > > > > *
> > > > > "Eu adoraria mudar o mundo, pena que eles não me fornecem o
> > > > > código-fonte".
> > > > > ~
> > > > > \°v°
> > > > > ( . )\ --> open-source
> > > > > ^ ^
> > > > > *
> > > > >  
> > > >  
> > >  
> > > ---------------------------------------------------------------------------------------------------------------------------
> > > > > *
> > > > > Email: [email protected] 
> > > > > (mailto:[email protected])
> > > > > Url: http://andrewd.com.br
> > > > >  
> > > > > --
> > > > > Você está recebendo esta mensagem porque se inscreveu no grupo
> > > > > "CodeIgniter Brasil" dos Grupos do Google.
> > > > > Para postar neste grupo, envie um e-mail para
> > > > > [email protected] 
> > > > > (mailto:[email protected]).
> > > > > Para cancelar a inscrição nesse grupo, envie um e-mail para
> > > > > [email protected] 
> > > > > (mailto:[email protected]).
> > > > > Para obter mais opções, visite esse grupo em
> > > > > http://groups.google.com/group/codeigniter-br?hl=pt-BR.
> > > > >  
> > > >  
> > > > _______________________________________________
> > > > [email protected] (mailto:[email protected])
> > > > http://www.codeigniter.com.br
> > > > http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > >  
> > > > ---------------------------
> > > > Oportunidade de negócio
> > > > http://www.franquiasargohost.net
> > > > ---------------------------
> > > >  
> > >  
> > >  
> > >  
> > > _______________________________________________
> > > [email protected] (mailto:[email protected])
> > > http://www.codeigniter.com.br
> > > http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > >  
> > > ---------------------------
> > > Oportunidade de negócio
> > > http://www.franquiasargohost.net
> > > ---------------------------
> > >  
> >  
> > _______________________________________________
> > [email protected] (mailto:[email protected])
> > http://www.codeigniter.com.br
> > http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> >  
> > ---------------------------
> > Oportunidade de negócio
> > http://www.franquiasargohost.net
> > ---------------------------
> >  
>  
>  
>  
> _______________________________________________
> [email protected] (mailto:[email protected])
> http://www.codeigniter.com.br
> http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>  
> ---------------------------
> Oportunidade de negócio
> http://www.franquiasargohost.net
> ---------------------------
>  
>  


_______________________________________________
[email protected]
http://www.codeigniter.com.br
http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------

Responder a