Ir para conteúdo

POWERED BY:

Arquivado

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

Alexia

Erro ao gravar valores (moeda) no mysql...

Recommended Posts

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

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

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

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

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

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

×

Informação importante

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