[英]How do i sum different column to get total in array
我有一个如下所示的输入表单:
<form action="payment-code.php" method="POST">
<tbody>
<?php
$query = "SELECT * FROM staffs ";
$query_run = mysqli_query($conn, $query);
if(mysqli_num_rows($query_run) > 0)
{
foreach($query_run as $row)
{
?>
<tr>
<td>
<?=$row['staff_id']; ?>
<input type="hidden" name="id[]" value="<?=$row['staff_id']; ?>">
</td>
<td>
<input type="text" name="salary[]">
</td>
<td><input type="text" name="extra_fee[]">
</td>
<td><input type="text" name="Bonus[]"></td>
</tr>
<?php
}
}
?>
<button type="submit" name="save_payment">Save payment</button>
</tbody>
</form>
填写完该表格后,我想将 3 个不同的输入值(salary、extra_fee 和 Bonus)相加得到 total_amount,如下所示:
id salary bonus extra_fee total_amount
1 120 10 20 150
2 110 5 10 125
3 115 4 9 128
4 100 12 10 122
5 90 10 10 110
6 123 5 10 138
我尝试了这段代码,但它不起作用。 您还有其他可以实现这一目标的想法吗?
<?php
if(isset($_POST['save_payment']))
{
$id = $_POST['staff_id'];
$salary = $_POST['salary'];
$totalfee = $_POST['extra_fee'];
$totalbonus = $_POST['Bonus'];
$total_payment = $salary + $totalfee + $totalbonus;
foreach ($staff_id as $key => $value){
$query = "INSERT INTO payments(staff_id, payment_amount) VALUES ('".$value ."', '".$staff_id[$key]. "', '". $total_payment[$key]."')";
$query_run = mysqli_query($conn, $query);
}
?>
请帮助我,因为我已经为此苦苦挣扎了一段时间
您的脚本对SQL Injection Attack开放。 即使您正在逃避输入,它也不安全! 您应该始终在
MYSQLI_
或PDO
API 中使用准备好的参数化语句,而不是将用户提供的值连接到查询中。 永远不要相信任何用户输入!
所以我也解决了这个问题
然后,您需要做的就是使用$_POST['id]
作为要循环的数组和该数组的键来寻址其他数组,在循环内进行计算。
<?php
if(isset($_POST['save_payment'])) {
foreach ($_POST['id'] as $key => $val){
// do the calc here
$total_payment = $_POST['salary'][$key] +
$_POST['extra_fee'][$key] +
$_POST['Bonus'][$key];
$sql = "INSERT INTO payments (staff_id, payment_amount) VALUES (?,?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param('is', $_POST['id'][$key], $total_payment);
$stmt->execute();
}
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.