I'm trying to play a total calculation on an input and also on a shopping cart session that I'm developing and I'm not getting it, I'll try to explain the problem I have.
The inputs are like this:
<div class="qty">
// QUANTIDADE
<?php if ( isset($_SESSION["quantidade"][$id]) && ($_SESSION["quantidade"][$id] != 0) ){ ?>
<input type="text" id="quantidade" name="quantidade" maxlength="10" value="<?php echo $_SESSION["quantidade"][$id] ?>" id_qtd="<?php echo $list['id_produto'] ?>" />
<?php } else { ?>
<input type="text" id="quantidade" name="quantidade" value="<?php echo $QTD; ?>" class="input" id_qtd="<?php echo $list['id_produto']; ?>" />
<?php } ?> x
// VALOR UNITÁRIO
<?php if ( isset($_SESSION["valor_unitario"][$id]) && ($_SESSION["valor_unitario"][$id] != 0) ){ ?>
<input type="text" id="valor_unitario" name="valor_unitario" maxlength="10" value="<?php echo $_SESSION["valor_unitario"][$id] ?>" id_unit="<?php echo $list['id_produto'] ?>" />
<?php } else { ?>
<input type="text" id="valor_unitario" name="valor_unitario" value="<?php echo $QTD; ?>" class="input" id_unit="<?php echo $list['id_produto']; ?>" />
<?php } ?> =
SOMA TOTAL
<input type="text" id="valor_total" name="valor_total" value="<?php echo $_SESSION["valor_total"][$id]; ?>"
id_total="<?php echo $list['id_produto']; ?>" />
Each record, such as quantidade
and valor unitário
, I am saving in session and they are registered even when I insert a new product, I do this to save them:
The calls look like this:
// ATUALIZANDO QUANTIDADE $("input[name='quantidade']").blur(function(){ var sAcao = 'atualizar-quantidade'; var sQuantidade = $(this).val(); var sID_QTD = $(this).attr('id_qtd'); $.ajax({ type: "POST", url: "atualizar-dados.php", data: { 'acao' : sAcao, 'quantidade' : sQuantidade, 'id_qtd' : sID_QTD }, success: function(msg){ $(".ms").text(msg); } }); }); // ATUALIZANDO O VALOR UNITÁRIO $("input[name='valor_unitario']").blur(function(){ var sAcaoUnit = 'atualizar-valor'; var sValorUnitario = $(this).val(); var sID_UNI = $(this).attr('id_unit'); $.ajax({ type: "POST", url: "atualizar-valor.php", data: { 'acaoUnit' : sAcaoUnit, 'valor_unitario' : sValorUnitario, 'id_unit' : sID_UNI }, success: function(msg){ $(".ms").text(msg); } }); }); });
Quantity:
session_start(); $acaoUnit = $_POST['acao']; if ( isset($acao) && $acao == 'atualizar-quantidade' ){ $id = isset($_POST["id_qtd"]) ? $_POST["id_qtd"] : null; $_SESSION["quantidade"][$id] = $_POST['quantidade']; //echo $_SESSION["quantidade"][$id]; }
Unit Value:
session_start(); $acaoUnit = $_POST['acaoUnit']; if ( isset($acaoUnit) && $acaoUnit == 'atualizar-valor' ){ $id = isset($_POST["id_unit"]) ? $_POST["id_unit"] : null; $_SESSION["valor_unitario"][$id] = $_POST['valor_unitario']; // echo $_SESSION["valor_unitario"][$id]; }
What I'm trying to do to save the total sum:
window.onload = function() { $("input[name='valor_total']").focus(function() { $('.qty').each(function() { // console.log(this); var qtd = $(this).find('input[name=quantidade]').val() var val = $(this).find('input[name=valor_unitario]').val(); // QUANTIDADE TOTAL var total = parseFloat(qtd) * parseFloat(val); $(this).find('input[name=valor_total]').val(total); var sAcaoTotal = 'atualizar-total'; var sValorTotal = total; // var sID_Total = $(this).attr('id_total'); // alert(sValorTotal); $.ajax({ type: "POST", url: "atualizar-total.php", data: { 'acaoTotal' : sAcaoTotal, 'valor_total' : sValorTotal // 'id_total' : sID_Total }, success: function(msg){ $(".ms").text(msg); } }); }); }) }
And attempting to save the value in session:
session_start(); $acaoTotal = $_POST['acaoTotal']; if ( isset($acaoTotal) && $acaoTotal == 'atualizar-total' ){ $id = isset($_POST["id_total"]) ? $_POST["id_total"] : null; $_SESSION["valor_total"][$id] = $_POST['valor_total']; // echo $_SESSION["valor_unitario"][$id]; }
For the quantity and unit value it works, but for the total not, it is doing the following: I enter a new product, it informs the quantity and unit value and when clicking on the total field the sum is done, but when inserting a new product the total adds up, but clicking on the total field the value is calculated. I hope it does not get complicated.