Я хотел бы получить значение того, что я повторил в значении элемента HTML, но я использовал foreach, поэтому он сохраняет только последнее значение последнего цикла. Я бы обновил reqStatus в зависимости от его идентификатора с помощью почтового метода для передачи переменных.
HTML с foreach:
<form method = "POST" action = "">
<table>
<th> Request ID:</th>
<th> Request Status:</th>
<?php
$requests = new OrderRequests();
$requests->getAllOrders();
foreach($requests->orderList as $oList){?>
<tr>
<td>
<input type = "hidden" name = "reqId" value = "<?php echo $oList["request_id"];?>"><?php echo $oList["request_id"];?>
</td>
<td>
<input type = "hidden" name = "reqStatus" value = "<?php echo $oList["request_status"];?> "><?php echo $oList["request_status"];?>
</td>
<?php if ($oList["request_status"]= = "Delivered"){?>
<input type = "hidden" id = "reqIDUpdate" name = "reqIDUpdate" value = "<?php echo $oList["request_id"];?>">
<td>
<input type = "submit" class = "button" value = "Confirm Delivery">
</td>
<?php }}?>
</tr>
</table>
</form>
После публикации:
if (!empty($_POST["reqIDUpdate"])){
$requestIDUpdate = $_POST["reqIDUpdate"];
global $connection;
$sql = "UPDATE order_request SET request_status = 'Received Delivery'
WHERE request_id = {$requestIDUpdate} ";
mysqli_query($connection, $sql);
unset($_POST["reqIDUpdate"]);
}
ваша проблема в том, что у вас есть n число name = "reqIDUpdate", и, поскольку все они имеют одинаковую форму, последнее перезаписывает все предыдущие значения. У вас есть несколько вариантов, некоторые из которых включают в себя: наличие каждой строки в своей собственной форме; используйте javascript, чтобы отключить все другие входы, кроме соседнего/родного элемента нажатой кнопки;






Хотя вы повторяете уникальные значения, значение, которое присваивается скрытым полям формы (reqId и reqStatus), перезаписывается новыми значениями в цикле foreach. К концу цикла foreach в этих скрытых полях сохраняются только последние значения.