Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Criei uma tabela que insere descrição e valor de produtos. Em pesquisa pela net, verifiquei que o tipo mais usado é o float, decimal e int. Optei por usar decimal(10,2). Ocorre que, quando insiro por ex:
22,08
ele mostra certinho, do jeito digitado, porém, quando coloco um número a mais,como por exemplo:
222,08 ou 2.222,08
ele grava apenas 22,08.
isso é problema com o Mysql ou o php?!?
Para o campo utilizo o seguinte script
<input name="valor" type="text" id="valor" onkeypress="return maskKeyPress(event)" onkeydown="FormataMoeda(this,10,event)" value="<?php echo KT_escapeAttribute($row_rscredito['valor']); ?>" size=" 50" maxlength="50" />
Mesmo quando eu retiro a função de máscara, a inserção ocorre de forma erronea.
abaixo o código para inserir no BD
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO credito (id_credito, id_cliente, origem, destino, descricao, valor, data_credito) VALUES (%s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['id_credito'], "int"),
GetSQLValueString($_POST['id_cliente'], "int"),
GetSQLValueString($_POST['origem'], "text"),
GetSQLValueString($_POST['destino'], "text"),
GetSQLValueString($_POST['descricao'], "text"),
GetSQLValueString($_POST['valor'], "double"),
GetSQLValueString($_POST['data_credito'], "date"));
mysql_select_db($database_conn, $conn);
$Result1 = mysql_query($insertSQL, $conn) or die(mysql_error());
}
?>
Ja testei com float, int, decimal e não funcionou.
Também tentei inserir direto no mysql via código. Digitei 123456789. Na consulta que fiz ao banco ficou: 12345678,00.
depois fiz o teste na página que montei. Assim digitei:1.234.567,89 , mas o resultado no Banco de dados foi : 1.23
Pode ser que o erro seja na máscara.......
bom....
testei e o erro é com a máscara.
Alterei a máscara e recebi o seguinte resultado:R$ 22.222.222,00.No entanto, eu digitei R$ 22.222.222,22, ou seja, os centavos não estão sendo computados.!
Vinicius,
ta resolvido
realmente era poblema com a virgula na hora da máscara. Como preciso rodar este script logo, não vou colocar a máscara temporariamente no campo valor.vlw
Uso o decimal num dos projetos aqui, e não tive algum problema semelhante ao seu.
Para irmos eliminando possibilidades, acho interessante verificar primeiro o script php para ver se não está faltando alguma formatação/conversão para ser inserido corretamente.