Ir para conteúdo

POWERED BY:

Arquivado

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

mcd more core

[Resolvido] Valores moeda [ centavos ] PHP

Recommended Posts

Galera, tenho os seguintes itens abaixo ao qual não consigo resolver...

 

No BD tenho

preco = 900.55

o que deveria aparecer R$900,55, porém ele só aparece R$900,00 sem os centavos.

 

Meu código esta da seguinte forma...

<?php
$preco="900.55";
echo number_format( substr( preg_replace( '/[^\d+]/' , null , $preco ) , 0 , -2 ) , 2 , ',' , '.' );
?>

 

Como eu poderia resolver isso e aparecer os centavos do mesmo?

 

aguardo essa força! :natallaugh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

 

Se entendi bem, basta você dar um echo na variavel $preco, que será exibido como esta.

 


echo $preco;

 

 

Cara, não é echo para exibir, a questão é que ele ao invez de exibir R$900,55 centavos, ele só exibe R$900,00 sem os [ ,55 ] centavos que é para exibir.

 

entendeu? alguma ajuda ai chapa?

 

valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o motivo de usar substr e preg_replace?

 

<?php

$preco = "900.55";

echo number_format( $preco , 2 , ',' , '.' );

// 900,55

 

 

Carlos mas ai vem outra questão, quando eu insero no banco de dados os valores que correspondem a MIL, ele acaba não aceitando nesse number_format comum.

 

BD = 1.250.55, ele só aceita no formato que coloquei acima, como resolver que ele aceite quando se tratar de vaores de MIL para cima e ainda aceite os centavos ?

 

por isso o motivo de substr e preg_replace.

 

porque consigo tratar para ele identificar e aceitar tranquilo quando os valores vierem acima de 1 decimal.

 

R$900,55 // aqui ele aceita tranquilo

R$1.250,55 // assim também aceita.

 

Agora se eu colocar somente number_format e tiver no BD cadastrado ( 1.250.55 ) ele acaba não exibindo assim, acaba exibindo errado o valor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem um erro de modelagem no seu banco de dados.

 

O correto seria gravar 1250.55. O tipo correto poderia ser Decimal(10,2) ou Double

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve estar usando um campo do tipo VARCHAR e salvando com o ponto na milhar, certo?

 

Como se trata de valor monetário, o correto seria usar um campo do tipo DECIMAL ou FLOAT, e não VARCHAR.

 

<?php

$float = 1250.55;

var_dump(number_format($float, 2, ',', '.')); // string(8) "1.250,55"

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.