Autor Tópico: Números em padrão brasileiro no PHP e MySQL  (Lida 1166 vezes)

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 326
    • Ver perfil
Números em padrão brasileiro no PHP e MySQL
« Online: 17 de Março de 2017, 10:54 »
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:
Código: [Selecionar]
<?php
 $numero
1234567.896;
 echo 
number_format($numero2',''.'); 
?>
Isso dá na saída:
Código: [Selecionar]
1.234.567,90
Mas para operar como faço para apresentar e inserir sempre neste formato tanto em <input value=" "> quanto em $_GET[' ']?

Offline agente100gelo

  • Administrador
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.250
  • @Ceará
    • Ver perfil
Re:Números em padrão brasileiro no PHP e MySQL
« Resposta #1 Online: 17 de Março de 2017, 14:14 »
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

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 326
    • Ver perfil
Re:Números em padrão brasileiro no PHP e MySQL
« Resposta #2 Online: 17 de Março de 2017, 17:25 »
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

Offline maurov

  • Usuário Ubuntu
  • *
  • Mensagens: 326
    • Ver perfil
Re:Números em padrão brasileiro no PHP e MySQL
« Resposta #3 Online: 31 de Março de 2017, 12:54 »
Retomando a ssunto, e reabrindo o tópico.

Citar
Nas 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