我有一个php文件,它使用从mysql数据库中获取的数据为我创建一个表。
<?php
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $row['ID'] . "</td>";
echo "<td>" . $row['Name'] . "</td>";
echo "<td>" . $row['CountryCode'] . "</td>";
echo "<td>" . $row['District'] . "</td>";
echo "<td>" . $row['Population'] . "</td>";
echo "<td>" . $row['Price'] . "</td>";
echo "<td><input type=\"number\" name="quantity" id="quantity"></td>";
echo "</tr>";
}
} else {
echo "0 results";
}
$conn->close();
?>
在每一行的末尾,我都有一个输入数字,以便可以计算每种产品的数量(在这种情况下为国家/地区)。如何获得每个国家的金额,乘以价格,然后在表格末尾返回总计?
答案 0 :(得分:1)
您必须在表格周围添加一个表单标签,然后对每行的记录价格*数量求和
我在这里所做的是检查是否在POST变量中设置了数量。如果存在,则将数据放入数量值中。之后,您必须使用记录ID的键将能够放入数组的数量的名称命名为ID。
此后,如果表单提交,则数量将作为查询字符串发送回页面。然后我将价格乘以数量,然后将其相加得出变量。完成循环后,在表末尾回显sum变量。
$html = '';
if ($result->num_rows > 0) {
$html .= '<form method="GET" action="" target="_self>';
$row = $result->fetch_assoc();
if(isset($_GET['quantity'][$row['ID']]))
$qty = $_GET['quantity'][$row['ID']];
else
$qty = 0;
$sum = 0;
// output data of each row
while ($row) {
$html .= '<tr>';
$html .= '<td>' . $row['ID'] . '</td>';
$html .= '<td>' . $row['Name'] . '</td>';
$html .= '<td>' . $row['CountryCode'] . '</td>';
$html .= '<td>' . $row['District'] . '</td>';
$html .= '<td>' . $row['Population'] . '</td>';
$html .= '<td>' . $row['Price'] . '</td>';
$html .= '<td>
<input type="number" name="quantity[' . $row['ID'] . ']" value="' . $qty . '">
</td>';
$html .= '<td>' . ($sum += $row['Price'] * $qty) . '</td>';
$html .= '</tr>';
}
$html .= '<input name="submitForm" value="submitForm">';
$html .= '</form>';
$html .= '<tr>';
$html .= '<td>Total = '.$sum.'</td>';
$html .= '</tr>';
} else {
$html .= "0 results";
}
$conn->close();
echo htmlspecialchars($html);
请记住使用htmlspecialchars回显结果。
答案 1 :(得分:1)
如果要使用PHP进行操作,则必须分两个步骤进行操作,因为PHP是在服务器中处理的。因此,您将输入所需的所有数量,并在按下“计算”按钮时,该页面会将所有值发送到服务器,服务器将计算所需的一切并提供最终结果。
我看到此解决方案的一个问题是,一旦获得所需的所有数量,就必须再次获得价格。我的效率不是很高,因为您已经在第一页上有了它们。我在这里看到两个解决方案:
$_SESSION
字段中跟踪价格,这样您就可以在离开页面后访问价格,而不必从数据库中获取价格。input
字段中显示价格(我建议使用readonly
,以便用户在此处不会更改此值),因此价格将包含在其中浏览器将发送到服务器的$_POST
(或$_GET
,如果使用此变量)。如果您只想显示该值,而后又不使用它,则可以使用javascript来计算它,这可能会更容易。
即使不是这里要点,但在while循环上通过PHP显示input
时也要小心,因为这里所有input
都具有相同的id
,这样会使计算您想要的东西变得更加困难。
希望有帮助!