Formatar Valores De Dinheiro
#1
Posted 28/09/2006, 16:04
Estou passando pela seguinte dificuldade:
Tenho um site onde o cliente cadastra valores de pacotes, esses valores podem variar desde 10 reais até mais de 100 mil reais. Detalhe que as moedas são reais, euros e dolares.
Estou usando campo float no SQL e queria saber o melhor jeito de inserir e retornar esses dados.
No input atualmente eu coloquei para ele por somente numeros. ex: 12000
Pra retornar usei: number_format($content->getVSolteiro(), 2, ',', '.');
Assim já está certo ou tem outro jeito melhor?
Obrigado
#2
Posted 28/09/2006, 16:28
No campo de texto tu pode usar um JavaScript para formatar os números (casas decimais e separadores de milhares), para uma melhor visualização. Ao usuário postar, tu pega só os números do valor por expressão regular, e o divide por 100 (por causa dos decimais). Feito isso, cadastra no BD. Na exibição, tu pode usar a função number_format() mesmo, embora que a money_format() seria a melhor opção para este caso, pois se trata de mais de uma moeda.
É isso.
[]s Até mais
#3
Posted 28/09/2006, 16:46
Entra no msn entra xD~
#4
Posted 28/09/2006, 16:50
Lembra da formatação JavaScript? Vai incluir as casas decimais... Quanto tu pegar só os números, tu vai ter que dividir por 100 para obter o número certo, pois não terá nada separando.Dividir por 100? Essa eu não entendi o.O
Num posso.Entra no msn entra xD~
Daqui 10 minutos tenho que sair e ainda tenho que fazer uma aplicação XUL rodar aqui à qualquer custo.
[]s Até mais
#5
Posted 28/09/2006, 16:52
Mas se eu fizer sem o JS ai não preciso dividir por 100 certo?
#6
Posted 28/09/2006, 17:08
Bem... só se tu usar o ponto para separar os decimais.Ixi heahe, entra amanhã então xP~
Mas se eu fizer sem o JS ai não preciso dividir por 100 certo?
[]s Até mais
#7
Posted 28/09/2006, 17:13
#8
Posted 30/10/2006, 17:28
Função JavaScript para mascara de valores
Ex: 100000 => 1.000,00
<script> function FormataValor(id,tammax,teclapres) { if(window.event) { // Internet Explorer var tecla = teclapres.keyCode; } else if(teclapres.which) { // Nestcape / firefox var tecla = teclapres.which; } vr = document.getElementById(id).value; vr = vr.toString().replace( "/", "" ); vr = vr.toString().replace( "/", "" ); vr = vr.toString().replace( ",", "" ); vr = vr.toString().replace( ".", "" ); vr = vr.toString().replace( ".", "" ); vr = vr.toString().replace( ".", "" ); vr = vr.toString().replace( ".", "" ); tam = vr.length; if (tam < tammax && tecla != 8){ tam = vr.length + 1; } if (tecla == 8 ){ tam = tam - 1; } if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){ if ( tam <= 2 ){ document.getElementById(id).value = vr; } if ( (tam > 2) && (tam <= 5) ){ document.getElementById(id).value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ); } if ( (tam >= 6) && (tam <= 8) ){ document.getElementById(id).value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); } if ( (tam >= 9) && (tam <= 11) ){ document.getElementById(id).value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); } if ( (tam >= 12) && (tam <= 14) ){ document.getElementById(id).value = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); } if ( (tam >= 15) && (tam <= 17) ){ document.getElementById(id).value = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );} } } </scirpt>
No campo Input
<input name="valor" type="text" id="valor" onKeyPress="FormataValor(this.id, 10, event)" size="10" maxlength="10" />
Para gravar no banco vc ira usar a funcao php str_replace
str_replace(",",".",str_replace(".","",$valor))
- O primeiro str_replace [ que contem o $valor nao formatado ]
ira retirar os "." pontos
- o segundo str_replace ira trocar a "," por "."
Na hora de receber do banco de dados utilizara o number_format
number_format($campo['table_valor'], 2, ',','.')
Qualquer duvida...
posta ai
Alexandre Magno Semmer
www.alexandresemmer.com
Programador Web
Programação
ASP, PHP, JavaScript, CSS, SQL, JAVA, C, Paschal, Ajax, XML
Usuário
Links
Ajax Online - FireBug (Firefox) - Documentação PHP - Documentação Prototype - Documentação jQuery - Script.Aculo.Us
#9
Posted 31/10/2006, 11:57
Valeu ae cara ;]
#10
Posted 31/10/2006, 18:03
<script>
function FormataValor(id,tammax,teclapres) {
if(window.event) { // Internet Explorer
var tecla = teclapres.keyCode; }
else if(teclapres.which) { // Nestcape / firefox
var tecla = teclapres.which;
}
vr = document.getElementById(id).value;
vr = vr.toString().replace( "/", "" );
vr = vr.toString().replace( "/", "" );
vr = vr.toString().replace( ",", "" );
vr = vr.toString().replace( ".", "" );
vr = vr.toString().replace( ".", "" );
vr = vr.toString().replace( ".", "" );
vr = vr.toString().replace( ".", "" );
tam = vr.length;
if (tam < tammax && tecla != 8){ tam = vr.length + 1; }
if (tecla == 8 ){ tam = tam - 1; }
if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){
if ( tam <= 2 ){
document.getElementById(id).value = vr; }
if ( (tam > 2) && (tam <= 5) ){
document.getElementById(id).value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ); }
if ( (tam >= 6) && (tam <= 8) ){
document.getElementById(id).value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); }
if ( (tam >= 9) && (tam <= 11) ){
document.getElementById(id).value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); }
if ( (tam >= 12) && (tam <= 14) ){
document.getElementById(id).value = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); }
if ( (tam >= 15) && (tam <= 17) ){
document.getElementById(id).value = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );}
}
}
</script>
Falopa!
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)