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.
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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP