Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Overhead

[Resolvido] Gravando dados no mysql

Recommended Posts

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 =(

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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,25

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.