Números em padrão brasileiro no PHP e MySQL

Iniciado por maurov, 17 de Março de 2017, 10:54

tópico anterior - próximo tópico

maurov

O MySQL usa números separados com ponto decimal e sem separador de milhar.
Para converter um número extraído de uma variável, uso a seguinte comando:
<?php $numero= 1234567.896; echo number_format($numero, 2, ',', '.'); ?>

Isso dá na saída:
1.234.567,90

Mas para operar como faço para apresentar e inserir sempre neste formato tanto em <input value=" "> quanto em $_GET[' ']?

agente100gelo

O normal é você tratar números normalmente e só fazer a formatação para exibição ao usuário.
Então dentro dos inputs e dos GETs ficam números na formatação "1234567.896" mesmo.
Advogado e analista de sistema cearense.
Twitter: @glaydson

maurov

Entendido. Operacionlamente falando,
o número cento e vinte e três reais e quarenta e cinco centavos, que não salva no DB, é  digitado num input id="brl" como 123,45
Antes de salvá-lo, é necessário convertê-lo para
$uk=number_format($brl, 2, '.', ',');
E salvar apenas o $uk com decimal (5,2)

Para buscar do DB e apresentar numa tela, faz-se o inverso,
$brl=number_format($uk, 2, ',', '.');
e mostra no input com value="$brl"

Acho que é isso. Aceitamos contribuições

maurov

Retomando a ssunto, e reabrindo o tópico.

CitarNas frases abaixo onde lê-se Conversão de 1234... , onde aparece aspas duplas, eh no script aspas simples.
Mudei aqui porque a aspa simples eh um operador neste tipo de texto via echo, e não aparece ou altera o comando.


Conversao de 1234567.89 para number_format($numero, 2, ",", ".")
1.234.567,89

Conversao de 1234567.896 para number_format($numero, 2, ",", ".")
1.234.567,90

Conversao de 1 para number_format($numero, 2, ",", ".")
1,00

Conversao de 1234567 para number_format($numero, 2, ",", ".")
1.234.567,00

Conversao de 1234567 para number_format($numero, 2, ",", "")
1.234.567,00

Conversao de 1234567 para number_format($numero, 2, ",")
1.234.567,00

Problema1, contornável: Não consegui tirar o ponto decimal na conversão.

Problema 2 é o mais crítico:
Se for digitado um valor decimal (em reais, por exemplo) no fomato 123,45 , não consigo fazer a conversão para salvar no DB porque o number_format não reconhece um campo com vírgula como sendo numérico.
:P