Quantity of products to be differentiated in shopping cart

0

Colleagues.

Forgive me if I could not express what I really want in the title, because I could not find a correct definition but explain it here.

I have a shopping cart where the products are listed according to customer purchase and are stored in a DB table, however I am using a feature via Jquery that shows the quantity of products and changes by clicking the + or - button. See the image below:

Thecodeisthesameforeachproduct:

HTML

<divclass="quantity">
       <div class="quantity-select">
           <div class="entry value-minus">&nbsp;</div>
           <div class="entry value"><span>1</span></div>
           <div class="entry value-plus active">&nbsp;</div>
       </div>
    </div>

JQUERY

$('.value-plus').on('click', function(){
var divUpd = $(this).parent().find('.value'), newVal = parseInt(divUpd.text(), 10)+1;
if(newVal < 8) divUpd.text(newVal);
  var valor = $(this).closest('tr').find('td[data-nome]').data('nome'); // Funcional
  trocar = valor.replace(",",".");  
  valorTTotal =  document.getElementById("total").innerHTML;
  valorTotal = trocar + 1;
  vv = parseFloat(valorTotal) + parseFloat(valorTTotal);  
  document.getElementById("total").innerHTML = vv.toFixed(2);
  document.getElementById("subtotal").innerHTML = vv.toFixed(2);
  $.ajax({
      type: "GET",
      dataType: 'json',
       data:{ valor: vv.toFixed(2) },
      url: "atualizar-carrinho.php",
      success: function(resposta){
     }
   });


  var divUpd = $(this).parent().find('.value'), newVal1 = parseInt(divUpd.text(), 10)+1;
if(newVal1 < <?php echo $numero; ?>) divUpd.text(newVal);
  var valor = $(this).closest('tr').find('td[data-nome]').data('nome'); // Funcional
  trocar = valor.replace(",",".");  
  valorTTotal =  document.getElementById("total").innerHTML;
  valorTotal = trocar + 1;
  vv = parseFloat(valorTotal) + parseFloat(valorTTotal);  
  document.getElementById("total").innerHTML = vv.toFixed(2);
  document.getElementById("subtotal").innerHTML = vv.toFixed(2);
  $.ajax({
      type: "GET",
      dataType: 'json',
       data:{ valor: vv.toFixed(2) },
      url: "atualizar-carrinho.php",
      success: function(resposta){
     }
   });       
});

The line:

if(newVal < 8) divUpd.text(newVal);

Show how much the fields will have, but here my challenge comes in. Each product coming from the DB has its own quantity. How would I integrate this code? The integration would be the results coming from the bank gets PHP.

<?php
 while($jmProdutos = mysqli_fetch_object($sqlProdutos)){
    .....
   $qtdProduto = $jmProdutos->Quantidade;
}
    
asked by anonymous 27.03.2017 / 18:31

1 answer

1

I understand that you are saving the status of each client's cart in the database, correct?

You need to include in the HTML the primary key of the purchase and pass it on Ajax that you are sending to the server, just update it. I only advise using the POST method in Ajax for best practices ( GET should not be used to modify the database).

Example:

HTML

<div class="produto" data-id="123">
   [Nome do produto, preço, imagem etc]
   <input name="qtd" value="1" /> 
   <button id="qtdup">+</button>
</div>

JS

$('#qtdup').on('click', function(ev){
   [aumenta o número no input qtd e pega o número, como já foi feito na pergunta]
   var id_do_produto = $('#contaup').parent().data('id'); // aqui basta navegar pelo DOM e encontrar a div, tr ou o que você estiver usando para guardar o id do produto no carrinho
   $.post({
      type: "POST",
      dataType: 'json',
       data:{ id: id_do_produto, qtd: valor_de_qtd },
      url: "atualizar-carrinho.php",
      success: function(resposta){
     }
   });
});

PHP

<?php
 $produto_id = mysqli_real_escape_string($_POST['id']);
 $produto_qtd = mysqli_real_escape_string($_POST['qtd']);
 $sqlProdutos = $mysqli_query($conn, "SELECT * FROM carrinho_produtos WHERE id_carrinho = $produto_id");
 while($produtos = mysqli_fetch_object($sqlProdutos)){
    .....
   $qtdProduto = $produtos->Quantidade;
   $qtdProduto = $produto_qtd;
}
 mysql_query($conn, "UPDATE carrinho_produtos SET Quantidade = $produto_qtd WHERE id_carrinho = $produto_id");
    
27.03.2017 / 20:01