TransWikia.com

Salvando o valor da label no banco com javascritp

Stack Overflow em Português Asked by user195714 on November 19, 2021

Pessoal tenho esse input que trás o valor total da compra e tenho esse script que muda o valor do input de acordo com o tipo de entrega, ou seja, se for delivery, mostrar valor total + taxa de entrega e se for retirada, mostrar valor total sem taxa de entrega.

<!-- INPUT QUE TRAS O TOTAL VARIANDO COM O TIPO DE ENTREGA -->
              <form method="post" class="mt-2">
              <label class="text-dark" for="exampleInputEmail1">Total</label>
              <input type="text" class="form-control form-control-sm" id="total" name="total">

              <script>

                var delivery = "R$<?php echo $sub_total; ?>";
                var reitrada = "R$<?php echo $total; ?>";
                var valor = delivery;

                function addEventHandler(elem, eventType, handler) {
                  if (elem.addEventListener)
                    elem.addEventListener(eventType, handler, false);
                  else if (elem.attachEvent)
                    elem.attachEvent('on' + eventType, handler);
                }

                addEventHandler(document, 'DOMContentLoaded', function() {
                  addEventHandler(document.getElementById('tipoentrega'), 'change', function() {
                    if (document.getElementById("tipoentrega").value == 'Delivery') {
                      valor = delivery;
                    } else {
                      valor = reitrada;
                    }
                    console.log(valor);
                    document.getElementById('total').value = valor;

                  });
                });
              </script>
              </form>

              <!-- FIM DO CALCULO -->

Tenho esse ajax que busca os campos na página finalizar.php e insere no banco:

<!--AJAX PARA INSERÇÃO DOS DADOS -->
<script type="text/javascript">
  $(document).ready(function() {

    $('#btn-finalizar').click(function(event) {
      event.preventDefault();

      $.ajax({
        url: "carrinho/finalizar.php",
        method: "post",
        data: $('form').serialize(),
        dataType: "text",
        success: function(mensagem) {

          $('#mensagem').removeClass()

          if (mensagem == 'Cadastrado com Sucesso!!') {

            $('#mensagem').addClass('text-success');
            alert('Pedido Finalizado!');
            window.location = 'painel-cliente/index.php?acao=pedidos';

            //$('#btn-fechar').click();
            //location.reload();


          } else if (mensagem == 'Mercado Pago!!') {
            atualizarUltimaVenda();
            $("#modal-mp").modal("show");
          } else {

            $('#mensagem').addClass('text-danger')
          }

          $('#mensagem').text(mensagem)

        },

      })
    })
  })
</script>

Vou resumir a página finalizar.php de acordo com os dados citados ateriormente:

<?php 



require_once("../conexao.php");

@session_start();



$total = $_POST['total'];


res = $pdo->prepare("INSERT into vendas (total) values (:total)");



$res->bindValue(":total", $total);



$res->execute();


    

}   

Quando finalizo a compra, o pedido é emitido certinho, mas o valor da coluna total fica sempre em 0.00, ou seja, não é inserido o valor do input mas no proprio input ele tras o cáculo certinho.

inserir a descrição da imagem aqui

inserir a descrição da imagem aqui

2 Answers

Nossa cara, como eu amo e odeio a programação kkk era exatamente isso. O tipo da coluna total no banco é decimal(8,2). Retirei os R$ e funcionou perfeitamente. Muuuito obrigado. Salvou minha vida kkk

Answered by user195714 on November 19, 2021

De acordo com o seu código, o input text "total" pode receber um valor que muda de acordo com o tipo de entrega. O problema é que o valor tem "R$" no começo. Se o campo do banco aceitar apenas números, ele não vai gravar essa informação, o resultado vai ser o zero.

Você pode resolver isso tratando a informação do total antes de inserir no banco. Ficaria assim:

<?php 
require_once("../conexao.php");
@session_start();
$total = $_POST['total'];
$total = str_replace("R$","",$total);
$total = str_replace(".","",$total);
$total = str_replace(",",".",$total);

res = $pdo->prepare("INSERT into vendas (total) values (:total)");
$res->bindValue(":total", $total);
$res->execute();
   
?>

Answered by Bins on November 19, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP