我有一些像这样生成的输入
while($donnees = mysql_fetch_array($reqmodel)){
?>
<form action="#" name="order" method="post">
<div style='float:left;width:100%'>
<input type='text' name='order_item_sku[]' value='<?php echo $donnees['product_sku'] ;?>'>
<input type='text' name='product_quantity[]' value='0' id="qty[]">
<input type='text' name='product_name[]' value='<?php echo $donnees['product_name'] ;?>'>
<input type='text' name='product_id[]' value='<?php echo $donnees['virtuemart_product_id'] ;?>' style='width: 15px;'>
<input type='text' name='product_price[]' value='<?php echo $price = number_format($donnees['product_price']*1.196,0) ;?>' style='width: 25px;' id="prix[]">
然后我不知道我会得到多少输入。如何为每行乘以total price
product_quantity * product_price
?
答案 0 :(得分:1)
以下代码可能会有所帮助,也可能只是通过查看上面的代码来提供一些建议。
while ($row = mysql_fetch_array($reqmodel, MYSQL_ASSOC)) {
$productPrice = number_format($row['product_price']*$row['product_quantity'],0);
<input type='text' name='product_price' value='<?php echo "$price = {$productPrice}" ;?>' style='width: 25px;' id="prix">
}
建议1:
不推荐使用mysql_fetch_array以支持新的mysqli_fetch_array(),因此请考虑升级PHP数据库查询代码。
建议2:
我建议使用PHP模板引擎,例如Smarty。这将节省您将数据层与表示层分开的时间,并且您不需要编写如此多的内联echo语句来保持代码清洁。
建议3:
避免在名称语句中使用[]因为[]通常与数组相关联,并且可能会让任何试图阅读代码的人感到困惑。
建议4:
避免使用while循环,尽可能尝试使用for循环。这可以使代码保持快速并防止任何未知错误/泄漏/无限循环。
答案 1 :(得分:0)
您只需在输入的数组上运行for循环:
$total_price = 0;
$prices = $_POST['product_price'];
$quantities = $_POST['product_quantity'];
$c = count($prices);
for ($i = 0; $i < $c; $i++) {
$p = (int) $prices[$i]; $q = (int) $quantities[$i];
$total_price += $p * $q;
}
答案 2 :(得分:0)
这里是jQuery
http://jsfiddle.net/b9chris/hSxkW/
给出HTML输出,如:
<div>
<input name=qty />
<input name=price />
<span class=price></span>
</div>
<div>
<input name=qty />
<input name=price />
<span class=price></span>
</div>
这将自动计算范围标记中的价格字段:
$('input[name=qty], input[name=price]').keyup(function() {
var divParent = $(this).closest('div');
var qty = $('input[name=qty]', divParent).val()-0;
var price = $('input[name=price]', divParent).val()-0;
if (qty >= 0 && price >= 0)
$('span.price', divParent).text(qty*price);
});