Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu to fazendo uma aplicação que precisa trabalhar com valores e não to encontrando a solução ideal:
preciso que o preço de um produto seja armazenado, precisamente, informando milhares, centenas, dezenas, todas as informações. exemplo:
R$ 1.500,50 (mil e quinhentos reais e cinquenta centavos)
eu já usei uma função (str_replace) pra substituir a virgula por pontos, porém o que vem depois da vírgula não está sendo considerado
está salvando 1.500 apenas. Já tentei todo tipo de campo no banco (float, double, decimal, int).
Como eu poderia solucionar isso?
>
1 hora atrás, ShadowDLL disse:
Segue exemplo, abaixo:
SQL:
CREATE TABLE precos (
id INT NOT NULL AUTO_INCREMENT,
preco DECIMAL(11,2) NOT NULL,
PRIMARY KEY(id)
);
**TESTE:**
<?php
// SIMPLE CONN
$conn = new PDO (
'mysql:host=localhost;dbname=your_db', 'root', ''
);
// SALVA PRECO
if(isset($_POST["preco"]))
{
$value = str_replace('.', '', $_POST["preco"]);
$value = str_replace(',', '.', $value);
// QUERY
$test = $conn->prepare('INSERT INTO precos (preco) VALUES (?)');
$test->bindValue(1, $value);
$test->execute ();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title> EXAMPLE </title>
</head>
<body>
<form method="POST">
<label>R$ </label>
<input type="text" class="preco" name="preco" value="1.500,50" />
<button type="submit">SALVAR</button>
</form>
</body>
</html>
**RESULTADO:**

Obrigado pelo retorno, amigo. Poderia mandar só o formato que tá sendo enviado o preço que vem do POST, no mais, já me ajudou muito.No formulário: 1.500,50
Após str_raplace ele é "convertido" em: 1500.50
Segue exemplo, abaixo:
SQL:
<!DOCTYPE html>