Campo DECIMAL
Pessoal, bom dia.
Estou desenvolvendo um sistema em PHP e MySQL. Estou com o seguinte problema:
Tenho um campo no meu banco de dados para o valor do aluguel, por ser tratar de reais, deixe com campo como DECIMAL(10,2). Se eu passar o valor 650,00, ele cadastra, sem problemas, 650. Porém, quando passo o valor 1.000,00, ele cadastra somente 1. Alguém sabe me dizer como posso resolver isso?
Abraço!
Estou desenvolvendo um sistema em PHP e MySQL. Estou com o seguinte problema:
Tenho um campo no meu banco de dados para o valor do aluguel, por ser tratar de reais, deixe com campo como DECIMAL(10,2). Se eu passar o valor 650,00, ele cadastra, sem problemas, 650. Porém, quando passo o valor 1.000,00, ele cadastra somente 1. Alguém sabe me dizer como posso resolver isso?
Abraço!
Abraão Almeida
Curtidas 0
Respostas
Felippe Tadeu
18/10/2013
Boa tarde, tudo bem ?
Verifique as configurações regionais do SO!
Eu até postei uma dúvida de como alterar o decimal de " . " para " , " mas ninguém soube resolver a dúvida, então eu acabei fazendo na mão, só que é desktop.
Por padrão R$1500,00 <> R$1500.00
O Mysql trabalha com configurações americanas.
Verifique as configurações regionais do SO!
Eu até postei uma dúvida de como alterar o decimal de " . " para " , " mas ninguém soube resolver a dúvida, então eu acabei fazendo na mão, só que é desktop.
Por padrão R$1500,00 <> R$1500.00
O Mysql trabalha com configurações americanas.
GOSTEI 0
Abraão Almeida
18/10/2013
Alaplaia, boa noite!
Eu consegui resolver o problema. O problema todo estava sendo por que o campo está como DECIMAL(10,2), e o valor que eu estava passando era, por exemplo, R$ 1.000,00. Baseado nisso, quando ele identificava o '.', automaticamente truncava o valor. Não cadastrando nada além do ponto no banco de dados. Então, eu fiz o seguinte.
$aluguel = str_replace('.','',$aluguel);
$aluguel = str_replace(',','.',$aluguel);
Então, primeiro eu verifico se há ponto. Se houver, substituo por vazio, sem espaço, claro. Depois, verifico se há vírgula. Se houver, substituo por ponto.
Fazendo assim, quando passo o valor, por exemplo, R$ 1.200,00, ele cadastra como 1200,00. Quando faço o retorno para exibição do sistema, apenas uso a função number_format() e tudo está resolvido!
Abraço!!!
Eu consegui resolver o problema. O problema todo estava sendo por que o campo está como DECIMAL(10,2), e o valor que eu estava passando era, por exemplo, R$ 1.000,00. Baseado nisso, quando ele identificava o '.', automaticamente truncava o valor. Não cadastrando nada além do ponto no banco de dados. Então, eu fiz o seguinte.
$aluguel = str_replace('.','',$aluguel);
$aluguel = str_replace(',','.',$aluguel);
Então, primeiro eu verifico se há ponto. Se houver, substituo por vazio, sem espaço, claro. Depois, verifico se há vírgula. Se houver, substituo por ponto.
Fazendo assim, quando passo o valor, por exemplo, R$ 1.200,00, ele cadastra como 1200,00. Quando faço o retorno para exibição do sistema, apenas uso a função number_format() e tudo está resolvido!
Abraço!!!
GOSTEI 0
José
18/10/2013
Olá amigo Abrão que bom que conseguiu solucionar sua duvida
e agradeço em nome de todos do fórum, por ter compartilhado a solução conosco.
e agradeço em nome de todos do fórum, por ter compartilhado a solução conosco.
GOSTEI 0