Ir para conteúdo
Fórum Script Brasil
  • 0

Form Php -> Bd Mysql = Problema Com Decimal


Chumaço

Pergunta

Eu tenho um formulário em PHP que manda suas informações para um banco de dados em MySQL, beleza ele manda quase todas a informações corretas menos os campos de Valor e Peso, que utilitazam numeros não inteiros, eu já tentei digitar ex: "5,80" "5,8" "5, 80" "5, 8" "5.80" "5.8" "5. 80" "5.8"nos campos e quando olho no banco de dados só está a parte inteira, ou seja, "5".

É esse o meu problema espero que alguém saiba como solucionar, qualquer coisa estou aqui.

Até mais.

P.S.: No MySQL tais campos estão definidos para decimal, claro né :P

Link para o comentário
Compartilhar em outros sites

15 respostass a esta questão

Posts Recomendados

  • 0

cara fiz o que voe falo, na verdade uma parte do que voce falo e não deu certo...

da uma confirida:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>insert_into_db</title>
</head>
<body>
  <p>
    <?php
   require("connection.php");
   $data = date('Y-m-d');
   $hora = strftime("%H:%M:%S");
   settype ($preço, 'float');
   settype ($peso, 'float');
   $bd_insert = "INSERT INTO produtos (idProduto, Nome, Descricao, preço, Peso, ad_Data, ad_Hora, Estoque)
   VALUES ('', '$nome', '$desc', '$preço', '$peso', '$data', '$hora', '$estoque')";
   mysql_query($bd_insert) or die ("erro: ".mysql_error());
   echo "Novo produto inserido com sucesso.<br>
         DATA: $data<br>
         HORA: $hora<br>";
?>
    <br />
<a href="default.php">Voltar</a></p>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

  • 0

De onde vêm $preço e $peso?

Tente a query assim:

INSERT INTO produtos (idProduto, Nome, Descricao, preço, Peso, ad_Data, ad_Hora, Estoque) VALUES ('', '$nome', '$desc', $preço, $peso, '$data', '$hora', '$estoque')

Se preço e peso são campos numéricos, não use aspas. ;)

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

vem dos campos preço e peso do seguinte formulario:

default.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>cad_new_produto</title>
<style type="text/css">
<!--
.style1 {
    font-family: Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-size: 50px;
}
.style2 {font-family: Arial, Helvetica, sans-serif}
.style4 {
    font-family: Arial, Helvetica, sans-serif;
    font-weight: bold;
    font-size: 14px;
}
-->
</style>
</head>

<body>
<p align="center" class="style1">Cadastro de novos produtos</p>
<form id="form1" name="form1" method="post" action="config.php">
  <div align="center">
    <table width="437" height="247" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td width="118"><span class="style4">Nome Produto:</span></td>
        <td width="319"><label>
          <input name="nome" type="text" id="nome" size="50" maxlength="50" />
        </label></td>
      </tr>
      <tr>
        <td><span class="style4">Descrição:</span></td>
        <td><label>
          <textarea name="desc" cols="50" rows="5" id="desc"></textarea>
        </label></td>
      </tr>
      <tr>
        <td><span class="style4">Preço (R$):</span></td>
        <td><label>
          <input name="preço" type="text" id="preço" />
        </label></td>
      </tr>
      <tr>
        <td class="style4">Peso (Kg):</td>
        <td><label>
          <input name="peso" type="text" id="peso" />
        </label></td>
      </tr>
      <tr>
        <td> </td>
        <td> </td>
      </tr>
      <tr>
        <td class="style4">Data:</td>
        <td><?php $date = date('Y-m-d'); echo "$date"; ?> </td>
      </tr>
      <tr>
        <td class="style4">Hora:</td>
        <td><?php $hora = strftime("%H:%M:%S"); echo "$hora"; ?></td>
      </tr>
      <tr>
        <td class="style4">Estoque:</td>
        <td><label>
          <input name="estoque" type="text" id="estoque" maxlength="5" />
        </label></td>
      </tr>
    </table>
  </div>
  <p align="center">
    <label>
    <input type="submit" name="Submit" value="Cadastrar" />
    </label>
    <label>
    <input type="reset" name="Submit2" value="Limpar" />
    </label>
  </p>
</form>
</body>

</html>

e com esse código que voce falo continua na mesma só a parte inteira.

Té mais.

Link para o comentário
Compartilhar em outros sites

  • 0

descobi o que estava errado era que no MySQL esta assim DECIMAl(10,0) dai eu dei uma lida por aew e descobri o problema dai agora coloquei DECIMAL(10,2) e está "tudo" beleza mas....

La no MySQL só ele só aceita se eu digitar o valor com . (ponto) e eu queria que fosse com virgula e tambem queira se for possivel que na hora da gravação agrupe os digitos dessa maneira 12.005,20...se não for possivel na hora da gravação queria saber de uma maneira que na hora de exibir a consulta tais numero sejam mostrados assim.

Té mais!

Link para o comentário
Compartilhar em outros sites

  • 0

Da uma conferida nesse exemplo aew (não sei se funciona, provavelmente não, deve está tudo errado mais não é o que importa):

<?php
     require ("../connection.php");
     $sql = "SELECT * FROM tb_cad_produt";
     $limite = mysql_query("$sql");
     function format (number_format("$preço", '2', ',', '.')){
     return $preço
 }
     while($sql = mysql_fetch_array($limite) ) {
     $nome         = $sql['Nome'];
     $preço        = $sql['preço'];

     format; #aew está um problema meu não sei como fazer para executar a funtion
     echo 'O produto "$nome" tem o valor de R$"$preço"';
 }
?>

Duvidas:

1ª.O que importa é se eu posso utilizar no comando number_format uma variavel no lugar do numero do 1º requisito.

2ª.Ali no exemplo tentei resolver um problema que eu acho que acontece, eu peço o valor preço do BD e o mando para $preço e dai formato ele com number_format mais dai eu achei que era necessario voltar o numero formatado para $preço senão ao tentar le-lo ele poderia utilizar o valor recebido do BD em vez do formatado, por isso criei aquela função, deve estar errado o código mas foi só para eu demostrar meu raciocinio.

Té mais

P.S.:Acho que até a parte de conexão com o MySQL está tudo certo mais a consulta acredito estar errada :P mais volto a dizer o código foi só para demonstrar o raciocinio.

Link para o comentário
Compartilhar em outros sites

  • 0

você colocou os dois primeiros parâmetros entre aspas. Isso não pode, pois são, respectivamente, float e integer.

Antes de testar con variáveis, teste com n'meros conhecidos, para você aprender a mexer com a função.

Se tivermos o número 38729.80 e quisermos separar os milhares por um espaço e as caas decimais por vírgulas, feremos:

$x = 38729.80;
$y = number_format ($x, 2, ',' , ' ');
echo $y;

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

boa tarde comunidade, gostaria de ajuda dos amigos pois sou novo em php+mysql, eu criei de cadastro para revenda, só que a data fica assim no banco de dados 0000-00-00 - alguém pode me ajudar, segue o codigo:

<?php
require_once "config.php";
//include("config.php");
?>
<html>
<head>
<meta charset="UTF-8"/>
<link rel="stylesheet" type="text/css" href="style.css"/>
<title>curso de php</title>
<script language="javascript"> //script para mostrar no formulario o valor em moeda
function currencyFormat(fld, milSep, decSep, e) {
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode;
if (whichCode == 13) return true; // Enter
key = String.fromCharCode(whichCode); // Get key value from key code
if (strCheck.indexOf(key) == -1) return false; // Not a valid key
len = fld.value.length;
for(i = 0; i < len; i++)
if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
aux = '';
for(; i < len; i++)
if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
aux += key;
len = aux.length;
if (len == 0) fld.value = '';
if (len == 1) fld.value = '0'+ decSep + '0' + aux;
if (len == 2) fld.value = '0'+ decSep + aux;
if (len > 2) {
aux2 = '';
for (j = 0, i = len - 3; i >= 0; i--) {
if (j == 3) {
aux2 += milSep;
j = 0;
}
aux2 += aux.charAt(i);
j++;
}
fld.value = '';
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--)
fld.value += aux2.charAt(i);
fld.value += decSep + aux.substr(len - 2, len);
}
return false;
}
</script>
</head>
<body>
<div class="bradius">
<div class="logo"></div>
<form method="post" action="?go=cadastrar">
<table id="cad_table" class="acomodar">
<tr>
<td>Nome do Vendedor:</td>
<td><input type="text" name="nome" id="nome" class="txt" /></td>
</tr>
<tr>
<td>Nome do Usuario:</td>
<td><input type="text" name="user" id="user" class="txt" /></td>
</tr>
<tr>
<td>Produto Vendido:</td>
<td><input type="text" name="prod" id="prod" class="txt" /></td>
</tr>
<tr>
<td>Valor da Venda R$:</td>
<td><input type="text" name="val" id="val" class="txt" onKeyPress="return(currencyFormat(this,'','.',event))"/></td>
</tr>
<input type="hidden" name="var" id="var" placeholder="Não escrever" class="txt" />
<td>Data:</td>
<td><input type="date" name="dat" id="dat" class="txt" min="2014-12-31" /></td>
</tr>
<td>Conta de Pagamento:</td>
<tr>
<td>Banco:</td>
<td><input type="text" name="ban" id="ban" class="txt" /></td>
</tr>
<tr>
<td>Numero da Conta:</td>
<td><input type="text" name="numc" id="numc" class="txt" /></td>
</tr>
<tr>
<td>Agencia:</td>
<td><input type="text" name="age" id="age" class="txt" /></td>
</tr>
<tr>
<tr>
<tr>
<td colspan="2"><input type="submit" value="Enviar" class="sb bradiusdius" /></td>
</tr>
</table>
</form>
</div>
</body>
</html>
<?php
if($_GET['go'] == 'cadastrar'){
$nome = $_POST['nome'];
$prod = $_POST['prod'];
$user = $_POST['user'];
$val = $_POST['val'];
$pagar+=$val*10/100;
$data = $_GET["dat"];
$ban = $_POST['ban'];
$numc = $_POST['numc'];
$age = $_POST['age'];
if(empty($nome)){echo "<script>alert('Preencha todos os campos para se cadastrar'); history.back();</script>";
}elseif(empty($user))
{echo "<script>alert('Preencha todos os campos para se cadastrar'); history.back();</script>";
}elseif(empty($prod))
{echo "<script>alert('Preencha todos os campos para se cadastrar'); history.back();</script>";
}elseif(empty($val))
{echo "<script>alert('Preencha todos os campos para se cadastrar'); history.back();</script>".number_format($val,2,",",".");
}elseif(empty($pagar))
{echo "<script>alert('Preencha todos os campos para se cadastrar'); history.back();</script>";
}elseif(empty($ban))
{echo "<script>alert('Preencha todos os campos para se cadastrar'); history.back();</script>";
}elseif(empty($numc))
{echo "<script>alert('Preencha todos os campos para se cadastrar'); history.back();</script>";
}elseif(empty($age))
{echo "<script>alert('Preencha todos os campos para se cadastrar'); history.back();</script>";
}else{
$query1 = mysql_num_rows(mysql_query("SELECT * FROM USUARIO WHERE USUARIO = '$user'"));
if($query1 == 1){
echo "<script>alert('Usuario já existe');history.back();</script>";
}else{
mysql_query("insert into usuario(nome, usuario, produto, valor, pagar, data, banco, conta, agencia) values('$nome' , '$user', '$prod' , '$val' , '$pagar' , '$dat' , '$ban' , '$numc' , '$age')");
echo "<script>alert('Usuario Cadastrado com sucesso');</script>";
echo "<meta http-equiv='refresh' content='0, url=index.php'>";
}
}
}
?>
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...