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

