InsideDarkWeb.com

Salvando o valor da label no banco com javascritp

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

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

2 Answers

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!

Related Questions

Qual a diferença entre split(” “) e split()

1  Asked on November 27, 2020 by shinforinpola

 

PHP não recebe POST Json

2  Asked on November 27, 2020 by weverton

     

Como converter latitude/longitude para Double em C#

1  Asked on November 26, 2020 by joaquim-caetano-teixeira

       

Como criar um “Area” no MVC no .net core 3.1?

2  Asked on November 23, 2020 by ester-ribeiro

   

Como bloquear datas retroativas no input datetime?

1  Asked on November 23, 2020 by grupo-astron

     

Problemas ao realizar restore de PostgreSQL

0  Asked on November 21, 2020 by renato-silva

       

“break” não termina a execução como deveria

3  Asked on November 21, 2020 by silvano-junior

       

Input em Bootstrap 4 não ocupa a largura toda

2  Asked on November 19, 2020 by guilherme-silva

   

Como tornar um repositório privado em público no GitLab?

1  Asked on November 8, 2020 by gabriel-fernandes

   

Baixar .txt para memória e ler

1  Asked on November 6, 2020 by jonathan-ribeiro

 

Criação de imagems com texto ‘imagecreate()’

1  Asked on November 3, 2020 by leandro-ferreira

       

Algoritmo de Portugol SE

0  Asked on October 29, 2020 by smilecraby_gamer

   

como melhorar o tempo no reconhecimento de voz em python 3?

1  Asked on October 27, 2020 by ruan-ferreira

 

Ask a Question

Get help from others!

© 2021 InsideDarkWeb.com. All rights reserved.