Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,
Como faço para eu gravar e seguinte valor no banco de dados mysql. R$1.500,15?
Eu tenho que utilizar alguma função pra retirar o ponto e virgula antes do insert?
Eu estou utilizando o tipo float(10,2)
Alguem pode me ajudar?
Amigo, para o campo float você usa apenas um ponto: 1500.15
Quando você quiser retornar o valor que está no DB para o formato em moeda nacional usa-se a função: number_format() o padrão brasileiro é: number_format($numero, 2, ',', '.');
Te aconselho tratar o valor antes de tentar gravar no DB.
>
Nao, se o seu campo no MySql for Varchar você pode colocar no Insert a variável que recebe o valor com aspas.
Dae fica tudo certo. Entra com ponto, virgula e tudo.
Tudo bem...até da pra usar varchar como você mencionou colega...Mas se depois que querer dar um select
SELECT SUM(campo) as soma FROM tabela vai somar tudo errado =(SELECT SUM(Cast(campo as integer)) as soma FROM tabela
Ou você deixa o campo integer mesmo e tira o ponto e a virgula na hora de mandar para o banco.
depois quando você resgatar você formata.
>
Nao, se o seu campo no MySql for Varchar você pode colocar no Insert a variável que recebe o valor com aspas.
Dae fica tudo certo. Entra com ponto, virgula e tudo.
Amigo,
Se os bancos de dados possuem campos do tipo MONEY, DOUBLE ou FLOAT é porque são para serem usados. Você resgatar um valor de um campo, converter o tipo dele para depois somar e mostrar o resultado para o usuário leva 10 vezes mais tempo do que pegar o seu campo do tipo próprio para manipulação de valores e somar. Essa opção de utilizar um campo do tipo VARCHAR simplesmente não dá certo. Utilize o number_format que irá funcionar muito bem.
Abraço.
Geraldo P. França
>
>
Nao, se o seu campo no MySql for Varchar você pode colocar no Insert a variável que recebe o valor com aspas.
Dae fica tudo certo. Entra com ponto, virgula e tudo.
Amigo,
Se os bancos de dados possuem campos do tipo MONEY, DOUBLE ou FLOAT é porque são para serem usados. Você resgatar um valor de um campo, converter o tipo dele para depois somar e mostrar o resultado para o usuário leva 10 vezes mais tempo do que pegar o seu campo do tipo próprio para manipulação de valores e somar. Essa opção de utilizar um campo do tipo VARCHAR simplesmente não dá certo. Utilize o number_format que irá funcionar muito bem.
Abraço.
Geraldo P. França
Oloco! Que escola você estudou ? Quero entrar nela.
Para que usar o number_format() se já tem o tipo de campo MONEY, DOUBLE e FLOAT como você diz ?
O valor já vem formatado com ponto e vírgula ? Então não precisa de number_format().
E outra o valor dele tem vírgula e vírgula é tratada como String, Varchar.
Portanto, não vejo diferença nenhuma, se irá usar o number_format() ambas as maneiras.
Escola da vida, né ? Basta saber interpretar o que foi dito nas respostas anteriores, e usar a inteligência para aplicar. No mais sem comentários.
Se o formato enviado será sempre com o milhar separado por ponto e os centavos com vírgula é só fazer um tratamento assim:
$numero = str_replace('.', '', $_POST['numero']);
$numero = str_replace(',', '.', $numero);
// Saída de 1.500,25 para 15000.25 que é como o campo float trabalha =]
//Pode inserir no banco
Pra mostrar na tela depois de um select use number_format
$numero = number_format($numero, 2, ',', '.');
//O que era 1500.25 passa a ser 1.500,25Obrigado a todos por participarem do meu tópico, com ajuda de vcs conseguir resolver meu problema.
Obrigado Isaque de Souza, Geraldo França, Dee e Quelipe.
Valeu galera...até a próxima!!!
http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
Nao, se o seu campo no MySql for Varchar você pode colocar no Insert a variável que recebe o valor com aspas.
Dae fica tudo certo. Entra com ponto, virgula e tudo.