Ir para conteúdo

POWERED BY:

Arquivado

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

Bruno Conte

Conversão float para moeda BR

Recommended Posts

Boa noite galera do salve salve.

 

Estou com um probleminha aqui.

preciso de uma função que converta o campo float para moeda em R$.

hoje quando cadastro meu campo ja faz por exemplo 1.000,00 ou 0,79.

 

so que quando vou alterar o cadastro e nao altero o valor por exemplo.

0,79 vira 79.00 no banco.

 

como faço esse conversor?

 

o do real para o float fiz assim:

 

function moeda($get_valor) { 
               $source = array('.', ',');  
               $replace = array('', '.'); 
               $valor = str_replace($source, $replace, $get_valor); //remove os pontos e substitui a virgula pelo ponto 
               return $valor; //retorna o valor formatado para gravar no banco 
       }

 

alquem ja fez algo desse tipo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao meu ver tanto faz utilizar o tipo FLOAT ou DECIMAL para salvar valores monetários no banco de dados.

 

Respondendo a sua dúvida, você pode utilizar a função number_format para transformar o valor em float para a nossa moeda.

 

Exemplo:

 

$valor = 500.99;
echo 'R$ ' . number_format($valor, 2, ',', '.') . '<br />';

$valor2 = 199;
echo 'R$ ' . number_format($valor2, 2, ',', '.') . '<br />';

 

Saída:

R$ 500,99

R$ 199,00

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando inserir no banco insira com ponto '.' para separar as casas decimais

 

1.000,00 insira 1000 ou 1000.00

1.000,01 insira 1000.01

0,79 insira 0.79

 

é só formatar a saída conforme mencionado acima

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente Victor Cometti, os valores tem que ser inseridos no banco com 'ponto', tanto para float, quanto pra decimal.

veja a diferença:

andrey@andrey:~$ mysql -u root -p
Enter password: ************
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.41 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create schema pg;
Query OK, 1 row affected (0.02 sec)

mysql> use pg;
Database changed
mysql> create table pagamentos( valor decimal( 10, 2 ) );
Query OK, 0 rows affected (0.06 sec)

mysql> insert into pagamentos values( '10,50' );
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> select * from pagamentos;
+-------+
| valor |
+-------+
| 10.00 |
+-------+
1 row in set (0.00 sec)

mysql> insert into pagamentos values( 10.50 );
Query OK, 1 row affected (0.00 sec)

mysql> select * from pagamentos;
+-------+
| valor |
+-------+
| 10.00 |
| 10.50 |
+-------+
2 rows in set (0.00 sec)

mysql>

 

Perceba que com 'vírgula' , você tem um warning

Query OK, 1 row affected, 1 warning (0.00 sec)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas isso ele já faz, a função que ele postou substitui a vírgula pelo ponto.

 

Pelo o que eu entendi a dúvida dele é como transformar o valor que vem do banco em formato FLOAT para reais, neste caso ele pode utilizar a função number_format como eu exemplifiquei.

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.