Jump to content


Photo

Ajuda Com Valor Monetario


  • Faça o login para participar
7 replies to this topic

#1 Daniel Docki

Daniel Docki

    Novato no fórum

  • Usuários
  • 17 posts
  • Sexo:Não informado

Posted 04/01/2008, 10:44

Galera pesquisando na internet eu consegui fazer alguma parte mas a parte que transforma para grava no BD não to conseguindo, olhem o que eu fiz
Aonde diz "//ESSA PARTE AQUI NÃO FUNCIONA//" é ali tá :P

//ESSA PARTE AQUI NÃO FUNCIONA//

<?php
// Como está no Form
$number = '1.234,56';

// Transforma para gravar no BD
$format_number = number_format($number, 2, '', '');
echo "$format_number"
?><br/>

//ESSA PARTE AQUI FUNCIONA//

<?php
// Como está no BD
$number = '1234.56';

// Imprime Moeda pt_BR
$format_number = number_format($number, 2, ',', '.');
echo "$format_number"
?>

Edição feita por: Daniel Docki, 04/01/2008, 11:16.


#2 savior

savior

    Campanha [codebox], use ou morra :D

  • Usuários
  • 1229 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR - Brasil
  • Interesses:Na vida ;P

Posted 04/01/2008, 10:58

Tirando a parte que o bbcode [code ] nao aceita formatacao, nao dá para saber qual parte não funfa :P

Qual é o tipo do campo no seu BD? VARCHAR? DOUBLE? FLOAT?

Lembrando disso tambem sobre essa função:

string number_format ( float $number [, int $decimals [, string $dec_point ]], string $thousands_sep )


Ele retorna uma string ... e não um numero, por isso recomenda-se utilizar ele somente na formatação na tela. ;)

[]'s

Edição feita por: savior, 04/01/2008, 10:58.

[lastfm] [blog]

Campanha codebox: use-a ou morra!
bfmaster_duran[at]yahoo.com.br


#3 Daniel Docki

Daniel Docki

    Novato no fórum

  • Usuários
  • 17 posts
  • Sexo:Não informado

Posted 04/01/2008, 11:12

Ah comecei a intender...hehehe, iria morrer tentando ...
por isso que a segunda está funcionando direitinho...

no BD o campo valor é FLOAT, como eu posso fazer então para transformar
1.234,56 em 1234.56 para gravar no BD

Lembrando eu to estudando ainda, é minha primeira vez programando algo
então posso mudar o BD a hora que eu quiser... ;p

Edição feita por: Daniel Docki, 04/01/2008, 11:15.


#4 Jeison Free

Jeison Free

    Turista

  • Usuários
  • 54 posts
  • Sexo:Não informado

Posted 04/01/2008, 12:05

então posso mudar o BD a hora que eu quiser... ;p


claro q pode
Poster de
www.iesart.com
www.pagelessbrasil.com
www.scriptbrasil.com.br (scripts)

<?php alem do limite

#5 savior

savior

    Campanha [codebox], use ou morra :D

  • Usuários
  • 1229 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR - Brasil
  • Interesses:Na vida ;P

Posted 04/01/2008, 12:47

Ah comecei a intender...hehehe, iria morrer tentando ...
por isso que a segunda está funcionando direitinho...

no BD o campo valor é FLOAT, como eu posso fazer então para transformar
1.234,56 em 1234.56 para gravar no BD

Lembrando eu to estudando ainda, é minha primeira vez programando algo
então posso mudar o BD a hora que eu quiser... ;p



Quando você está mechendo com valores monetários, recomenda-se SEMPRE deixar como FLOAT no banco de dados.
Facilitando assim fazer os calculos via PHP ;)
para mostrar o resultado na tela, tu utiliza o number_format :P

Recomendo não mudar o seu banco, mas sim seu código ;)

[]'s

[lastfm] [blog]

Campanha codebox: use-a ou morra!
bfmaster_duran[at]yahoo.com.br


#6 Daniel Docki

Daniel Docki

    Novato no fórum

  • Usuários
  • 17 posts
  • Sexo:Não informado

Posted 04/01/2008, 13:39

Tá, mas ninguem respondeu a minha pergunta

Como o cliente digita no form 1.234,56 fica gravado no BD 1.234 os centavos ele come
então ele teria que fazer uma transformação tipo de 1.234,56 para 1234.56

e quando eu for imprimir eu uso esse código aqui...

<?php
// Como está no BD
$number = '1234.56';

// Imprime Moeda pt_BR
$format_number = number_format($number, 2, ',', '.');
echo "$format_number"
?>

#7 savior

savior

    Campanha [codebox], use ou morra :D

  • Usuários
  • 1229 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR - Brasil
  • Interesses:Na vida ;P

Posted 04/01/2008, 13:50

É que você nao colocou a precisão do float no banco

Tem que ser assim no tipo do campo:
FLOAT (10,2)

Onde 10 é o tamanho total do campo e 2 é as casas decimais

Quem sabe isso resolva seu problema.
Sò não esqueça antes de gravar no banco de dados trocar virgula por ponto e ponto por virgula ;)

[]'s

[lastfm] [blog]

Campanha codebox: use-a ou morra!
bfmaster_duran[at]yahoo.com.br


#8 Melon

Melon

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Não informado

Posted 01/09/2008, 17:00

no form vc digitou assim certo 1.234,56?

mas no banco vc quer gravar assim 1234.56 certo??

vamos dizer q o nome da variavel no form fosse $valor

<?php
$tam = strlen($valor); //pega o tamanho da string
for ($i=0;$i<=$tam;$i++){
if ($valor[$i]!="."){
$valorcopia .="$valor[$i]";
}
//faz uma busca em todos caracteres de valor copiando para valor copia o seu conteudo, quando encontrar um ponto (.) ele ignora e continua copiando o resto..
}
$valor=$valorcopia; // valor recebe a copia 1234,56, porem no banco de dados irá automaticamente troca a virgula por ponto
echo"$valor";
?>




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq