Capturando dados monetários no banco de dados.

Home Fóruns PHP/MYSQL Capturando dados monetários no banco de dados.

Marcado: 

Visualizando 1 resposta da discussão
  • Autor
    Posts
    • #78227

      Olá pessoal, estou criando um sistema baseado nos cursos de PHP e Mysql tanto do Curso em Vídeo como do estudonauta.

      E estou enfrentando um problema.

      Quando eu lanço um valor monetário, tipo R$ 2,000.00 ele só chega no banco de dados o valor (2.00), o campo que recebe o valor no banco está configurado com doble 14,2, mas já usei float, decimal e problema continua o mesmo. Como posso fazer para quando eu subir os valores eles fiquem configurados? Vou colocar os códigos tanto do campo do formulário(cod1) quanto da captura dos dados(cod2) e também da parte onde imprimo os valores do banco(cod3)

      cod1 – Esse é o campo que do formulário

      <input type=”text” name=”valor” id=”valor” placeholder=”R$ ” min=”1.00″ max=”10.000,000″ onkeypress=”$(this).mask(‘R$ ##.###.##0.00’, {reverse: true});”>

      cod2 –

      <?php
      if(is_admin() || is_gerente() || is_caixa() || is_vendedor()){
      $cliente = $_POST[‘cliente’] ?? null;
      $boleta = $_POST[‘boleta’] ?? null;
      $vendedor = $_POST[‘vendedor’] ?? null;
      $pecas = $_POST[‘pecas’] ?? null;
      $valor = $_POST[‘valor’] ?? null;
      $desconto = $_POST[‘desconto’] ?? null;
      $pagamento = $_POST[‘pagamento’] ?? null;
      $dia = $_POST[‘dia’] ?? null;
      $mes = $_POST[‘mes’] ?? null;
      $ano = $_POST[‘ano’] ?? null;

      if(empty($cliente) || empty($boleta || empty($vendedor) || empty($pecas) || empty($valor) || empty($desconto) ||empty($pagamento) || empty($dia) || empty($mes) || empty($ano) )){
      echo msg_erro(‘Todos os dados são obrigatorios’);
      echo voltar_lancamento();
      }else{
      $q = “INSERT INTO caixa(cliente,boleta,vendedor,pecas,valor,desconto,pagamento,dia,mes,ano) VALUES(‘$cliente’, ‘$boleta’, ‘$vendedor’, ‘$pecas’, ‘$valor’, ‘$desconto’, ‘$pagamento’,’$dia’,’$mes’,’$ano’)”;

      if($banco->query($q)){
      echo msg_sucesso(“A venda foi cadastrado com sucesso!”);
      echo voltar_lancamento();
      }else{
      echo msg_erro(‘Desculpe algo deu errado!’);
      echo voltar_lancamento();
      }
      }
      }
      ?>

      cod3

      if ($busca->num_rows > 0) {
      while($reg = $busca->fetch_object()){
      echo “<tr><td>$reg->cliente<td>$reg->boleta<td>$reg->vendedor<td>$reg->pecas<td>$reg->valor<td>$reg->desconto<td>$reg->pagamento<td>$reg->dia<td>$reg->mes<td>$reg->ano”;
      if(is_admin() || is_gerente()){
      echo “<td><i class=’material-icons’>add_circle</i> <td>id class=’add’><i class=’material-icons edit’>edit</i>“;
      }elseif (is_caixa()){
      echo “<td><i class=’material-icons’>add_circle</i>”;
      echo “<td>
      id class=’add’><i class=’material-icons edit’>edit</i>“;
      }
      if(is_admin()){
      echo “<td>id class=’add’><i class=’material-icons delete’>delete</i>“;
      }
      }
      } else {
      echo “<p>Nenhum registro encontrado…</p>”;
      }
      }

    • #78711
      Tutora Mayla
      Mestre

      Felippe, tente uma solução usando a função str_replace do próprio PHP para realizar a troca de vírgulas por pontos e vice-versa antes de enviar para o banco de dados e veja se assim o valor é salvo corretamente.

      Espero ter ajudado, quaisquer dúvidas basta entrar em contato.

Visualizando 1 resposta da discussão
  • Você deve fazer login para responder a este tópico.