2014-09-26 187 views
0

首先,我很抱歉,如果这个问题已被问及解决之前,但我无法找到确切的答案/我的问题的解决方案。Javascript计算小计和总计从mysql

我的问题是,如果用户更改数量和/或选择更多1产品,我该如何计算总计?我的产品项目列表和值来自mysql。

这里是我的表说明:

<?php $price = 10.00;?> 
<input name="qty_<?php echo $obj->product_code;?>" type="text" id="qty<?php echo $obj->product_code;?>" value="0" size="2" onkeyup="calculate()"> 

<input name="subtotal_<?php echo $obj->product_code;?>" type="text" id="subtotal_<?php echo $obj->product_code;?>" value="0.00" size="7" readonly> 

<input name="qty_<?php echo $obj->product_code;?>" type="text" id="qty<?php echo $obj->product_code;?>" value="0" size="2" onkeyup="calculate()"> 

<input name="subtotal_<?php echo $obj->product_code;?>" type="text" id="subtotal_<?php echo $obj->product_code;?>" value="0.00" size="7" readonly> 

<input name="grandtotal" type="text" id="grandtotal" value="0.00" readonly> 

我用我的PHP/MySQL的结果值我输入的字段名/ ID,因为它更容易对我来说,识别/提交时传递的价值。

这里是我的javascript:

function calculate() 
{ 
    var quantity = document.getElementById('<?php echo $obj->product_code;?>').value; 
    var currprice = <?php echo $obj->product_code.$obj->product_price;?>; 
    var total = quantity * currprice; 
    document.getElementById('subtotal_<?php echo $obj->product_code;?>').value = total.formatMoney(2,',','.'); 
} 

那么,如何从每个产品计算分类汇总和总计文本字段显示呢? 我已经搜索了Google,但一直未能解决我的问题。

回答

0

1)使用权ID的

该ID的数量字段的不与功能的getElementById匹配。它应该以“qty_”开头,而不是直接产品代码。另外,为了规律,请将<input>的ID从“qty”更改为“qty_”。

2)权结构

您现在使用HTML,具有双重的数量和总金额<input>领域使用相同的ID。这会导致Javascript无法访问这些值。确保您区分这些输入字段的名称和ID。

PHP

$products = array(
 
    array("price"=>10, "code"=>"product1"), 
 
    array("price"=>25, "code"=>"product2") 
 
); 
 

 
foreach($products as $key => $productInfo) { 
 
    /* echo a hidden field with the price per product (for calculation later) */ 
 
    echo '<input type="hidden" name="price_'. $productInfo["code"] .'" id="price_'. $productInfo["code"] .'" value="'. $productInfo["price"] .'" />'; 
 

 
    /* echo the quantity field for this product */ 
 
    echo '<input class="qty" name="'. $productInfo["code"] .'" id="'. $productInfo["code"] .'" type="text" value="0" size="2" onkeyup="calculate()">'; 
 

 
    /* echo the subtotal field for this product */ 
 
    echo '<input name="sub_'. $productInfo["code"] .'" type="text" id="sub_'. $productInfo["code"] .'" value="0.00" size="7" readonly>'; 
 
} 
 

 
/* echo the field for total price */ 
 
echo '<input type="text" name="total" id="total" value="0.00" />';
这导致套每产物三个输入字段:

  • 一个用于每个产品的价格(ID = “price_THEPRODUCTCODE”)
  • 一个为数量(id =“THEPRODUCTCODE”)
  • 和一个小计(id =“sub_THEPRODUCTCODE”)

的Javascript

我建议使用jQuery库从这里输入字段中的数据更快,更容易收集。然后

职能是:

function calculate() { 
 
    var total = 0; 
 
    
 
    // for each quantity field: 
 
    $("input.qty").each(function() { 
 
    
 
    // get product code 
 
    var productCode = $(this).attr("id"); 
 
    
 
    // get price per product 
 
    var price = $("#price_"+productCode).val(); 
 
    
 
    // get quantity 
 
    var quantity = $(this).val(); 
 
    
 
    // calculate subtotal 
 
    var subtotal = (price*quantity); 
 
    
 
    // put new subtotal back in the input field 
 
    $("#sub_"+productCode).val(subtotal); 
 
    
 
    // add subtotal to total 
 
    total += subtotal; 
 
    
 
    }); 
 

 
    // put total in the input field of total 
 
    $("#total").val(total); 
 
    
 
}

+0

THX的简洁答案。我会让你知道我什么时候回家并测试它。稍后我会回到你身边。 :) – Onesofazr 2014-09-26 01:49:23

+1

感谢您的帮助。非常清晰和简单的解决方案感谢您分享一些知识。对此,我真的非常感激。非常感谢你的再次。问题解决了! – Onesofazr 2014-09-26 05:43:33

+0

不客气! :)我也学到了很多东西,很高兴能够回复这份青睐。 – Philip 2014-09-26 15:12:53