JS variable for PHP or direct in BD

Asked

Viewed 60 times

0

Good morning. I am a beginner programmer, and I am developing a sales web app, which sums up all prices of products dynamically included by javascript:

 <script>

function somaTotal() {

    var total = 0;

    $(".input_preco_venda").each(function(){

        total += parseFloat($(this).text());
    });

    $(".soma_venda").text(total);
}

// A função que gera inputs dinamicamente:
$(document).ready(function () {

    // A função que multiplica o preço do produto pela quantidade:
    $(document).on("keyup", ".input_quantidade_venda", function(){

        // pego o índice da classe
        var indice = $(".input_quantidade_venda").index(this);

        var n1 = parseInt(this.value, 10);
        // aplico a outra classe com o mesmo índice
        $('.input_preco_venda:eq('+indice+')').html(n1 * 10);

        somaTotal();
    });

    var i = 1;

    $('#add').click(function () {

        i++;

        $('#dynamic_field_venda').append('<tr class= "row" id="row' + i + '"><td><div class="input-field col s6"><input placeholder="Digite o Produto" name="input_produto_venda[]" type="text" class="validate"><label class="active" for="input_produto_venda[]">Produto</label></div><div class="input-field col s2"><input placeholder=" " name="input_quantidade_venda[]" class="input_quantidade_venda" type="text" class="validate" value="1"><label class="active" for="input_quantidade_venda[]">Quantidade</label></div><div class="input-field col s2"><div class="input_preco_venda"></div><label class="active" for="input_preco_venda[]">Preço</label></div><div class="input-field col s2"><button type="button" class="btn-floating btn-large waves-effect waves-light grey darken-3 btn btn-danger btn_remove" name="remove" id="' + i + '"><i class="material-icons">remove</i></button></div></td> </tr>');
    });

    $(document).on('click', '.btn_remove', function () {

        var button_id = $(this).attr("id");
        $('#row' + button_id + '').remove();

        somaTotal();
    });

    M.updateTextFields();//Manter este recurso após os adds e removes dos botões, pois dá erro no cálculo

    $('#submit').click(function(){

        $.ajax({

            url:"components/cad_venda.php",
            method:"POST",
            data:$('#cadastro_venda').serialize(),
            success:function(data) {

                alert(data);
                $('#cadastro_venda')[0].reset();
            }
        });
    });
});
 </script>

And play this div:

<div class="input-field col s3">

    <div class="row">

        <div class="input-field col s9 center">

            <?php echo "O total é R$ " ?>
        </div>

        <div class="input-field col s3 left">

            <div class="soma_venda" name="soma_venda" id="soma_venda"></div>
        </div>
    </div>
</div>

Bench:

 <?php

     $connect = mysqli_connect("localhost", "root", "", "narguile");

     $number = count($_POST["input_quantidade_venda"]);

     $soma_venda = $_POST['soma_venda'];

     if($number > 0) {

         for($i=0; $i<$number; $i++) {

             if(trim($_POST["input_quantidade_venda"][$i] != '')) {

                 $sql = "INSERT INTO vendas(quantidade, total) VALUES('".mysqli_real_escape_string($connect, $_POST["input_quantidade_venda"][$i])."', '$soma_venda')";
            mysqli_query($connect, $sql);
             }  
         }

         echo "Venda cadastrada!";  
     }  

     else {

         echo "Não rolou";  
     }
 ?>

But I need to put the value of this "soma_sale" in the database, and honestly, I have no idea how. If anyone can help me, I’d appreciate it.

  • It is necessary to use AJAX or a form for sending data.

  • @Valdeirpsr, I’m using. I put the full code now...

  • Vc wants to include in the bank all quantities and the overall total (not the total of each product)?

1 answer

1


Create a input hidden to receive the total value and send together in the serialize.

Put it after that div:

<div class="soma_venda" name="soma_venda" id="soma_venda"></div>
<input type="hidden" name="soma_venda">

And in the function that makes the sum, add:

("[name=soma_venda]").val(total);

Thus remaining:

function somaTotal(){
   var total = 0;

   $(".input_preco_venda").each(function(){
      total += parseFloat($(this).text());
   });

   $(".soma_venda").text(total);
   $("[name=soma_venda]").val(total);
}

Done. The total sum value will go together in the serialize and will be received in PHP in the variable $soma_venda = $_POST['soma_venda'];.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.