Alexia 0 Denunciar post Postado Janeiro 20, 2005 Ola Pessoal... Estou encontrando problemas ao gravar valores (moeda) no mysql...tenho um campo (valorvenda -> DECIMAL) que so aceita o formato 1000.00... e qdo o usuario entra com o valor 1.000,00 ocorre erro de gravacao... alguem sabe como posso corrigir esse problema ou evitar que ele ocorra?Grata...Alexia Compartilhar este post Link para o post Compartilhar em outros sites
Marrom 0 Denunciar post Postado Janeiro 20, 2005 Pelo que eu sei o padrão de moeda do MySQL é 1000.00 Bom eu uso a função abaixo, daí toda vez que o usuário digita 1000,00 ela converte para 1000.00 // a variável $valorbase recebe o valor digitado pelo usuário // já a variável $valor retorna o valor no formato correto PHP [/tr][tr] $tam = strlen($valorbase); for ($i = 0; $i < $tam; $i++) { $car = $valorbase{$i}; if($car == ','){ $valor = $valor . "."; }else{ if($car <> '.'){ $valor = $valor . $car; } } } [/tr] espero ter ajudado ... Compartilhar este post Link para o post Compartilhar em outros sites
walace 1 Denunciar post Postado Janeiro 20, 2005 Dá pra você usar o str_replace para trocar vírgula por ponto... só que o ponto de milhar não rola, então troque o ponto por nada daí se você tem 1.000,00 vai ficar 1000,00 e depois troque a vírgula por ponto, ficando então 1000.00 para gravação no banco.ps.: Alexia, lê minha msg e responde. Compartilhar este post Link para o post Compartilhar em outros sites
nadoweb 0 Denunciar post Postado Julho 7, 2008 Ola Pessoal... Estou encontrando problemas ao gravar valores (moeda) no mysql... tenho um campo (valorvenda -> DECIMAL) que so aceita o formato 1000.00... e qdo o usuario entra com o valor 1.000,00 ocorre erro de gravacao... alguem sabe como posso corrigir esse problema ou evitar que ele ocorra? Grata... Alexia Olá Alexia. Sei que a uma altura desta você já tenha resolvido a sua dúvida. Eu estava também com o mesmo problema e resolvi com o seguinte script: <?php $valor = "1.001,90"; /*Remove o . (ponto)*/ $novovalor = str_replace(".","","$valor"); /*Substitui a , por . (ponto) $novovalor2 = str_replace(",",".","$novovalor"); echo " R$ $novovalor2"; ?> tenho certeza que agora você e outras pessoas não terão mais problema com este tipo de conversão. VLW. Compartilhar este post Link para o post Compartilhar em outros sites
JCMPJ 0 Denunciar post Postado Julho 7, 2008 CUIDADO! O que vai acontecer se o usuário digitar 1000.00 e estiver querendo dizer um mil? Compartilhar este post Link para o post Compartilhar em outros sites
Daves 0 Denunciar post Postado Julho 7, 2008 Muito bem observado JCMPJ! Acho que a única forma que resolveria seria pegar a última ocorrência do "." e verificar se há mais de 2 casas além dele, se existir ele é um ponto de milhar e pode ser removido com o script acima, caso não, ele é um ponto que separa os digitos decimais, e deve ser mantido. Compartilhar este post Link para o post Compartilhar em outros sites