作为一个例子,我在表单中有四个输入文本框。我正在尝试计算每种商品类型的费用(quantity
* cost
)并计算所有商品的总数。我已将公式放在while循环中,以计算表单中找到的所有可能项目的成本。我没有收到任何结果以换取总费用? Demo
PHP
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$discount = $_POST['discount'];
$i = 1;
while(isset($_POST['quantity'.$i])){
$quantity = $_POST['quantity'.$i];
$cost = $_POST['cost'.$i];
$total = $quantity * $cost;
$i++;
}
}
html
<div id="contact-area">
<form action="" method="post">
<label>Quantity:</label> <input type="text" name="quantity1" id="quantity1"> <label>Cost:</label><input type="text" name="cost1" id="cost1"><br /><br />
<label>Quantity:</label> <input type="text" name="quantity2" id="quantity2"> <label>Cost:</label><input type="text" name="cost2" id="cost2"><br /><br />
<br /><br />
<input type="submit" value="Submit" >
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
echo"<p>Amount Due: $". $total ."</p>";
}
?>
</div>
答案 0 :(得分:3)
您重新分配$total
而非添加,因此最终总数将来自最后一项。它应该是:
$total += $quantity * $cost;
^
答案 1 :(得分:1)
每个循环都会覆盖您的$total
变量。
应该是:
$total += ($quantity * $cost);
答案 2 :(得分:1)
您需要添加
$total = 0;
在while循环和循环更改之前
$total = $quantity * $cost;
到
$total += $quantity * $cost;
答案 3 :(得分:1)
试试这个:
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$discount = $_POST['discount'];
$i = 1;
$total = 0;
while(isset($_POST['quantity'.$i])){
$quantity = $_POST['quantity'.$i];
$cost = $_POST['cost'.$i];
$total += $quantity * $cost;
$i++;
}
}
答案 4 :(得分:0)
像这样重写代码可以解决问题:
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$discount = $_POST['discount'];
$i = 1;
$total = 0;
while(isset($_POST['quantity'.$i])){
$total += $_POST['quantity'.$i] * $_POST['cost'.$i];
$i++;
}
}
这是改变的:
$total = 0;
循环之前添加while
,以确保无论如何分配变量。$quantity = $_POST['quantity'.$i];
&amp; $cost = $_POST['cost'.$i];
因为这些是可以直接访问的多余的值重复。$total =
更改为$total +=
,以便$total
实际累积在变量中。