Logic của bạn có những sai sót sau:$_POST
của bạn mảng có khóa untrain
và giá trị của nó là một dãy khóa nội bộ room_id
(vì chúng nằm trong tên hộp kiểm) và các giá trị user_id
(giá trị của hộp kiểm). Trong vòng lặp foreach của bạn $room_id
đã xác định giá trị của các hộp kiểm, thực sự là user_ids
. Ngoài ra, bạn nên lặp lại $_POST['untrain']
, Tôi không biết bạn lấy chìa khóa đó ở đâu $room->room_id
từ.
Tôi sẽ thay đổi điều đó thành:
if(isset($_POST['submit'])){
foreach ($_POST['untrain'] as $room_id => $user_id) {
//sanitize $room_id
$untrainQuery = "UPDATE room_users SET trained = '1' WHERE room_id = $room_id";
$db->update($untrainQuery);
}
}
Hoặc, nếu bạn có một mảng gồm tất cả các room_ids, bạn có thể lặp lại chúng để kiểm tra xem cái nào đã được chọn hay chưa:
if(isset($_POST['submit'])){
foreach ($room_ids as $room_id) {
//sanitize $room_id
if(isset($_POST["untrain[{$room_id}]"]){//that is, if it was checked
$trained = 1;
}else{
$trained = 0;
}
$untrainQuery = "UPDATE room_users SET trained = $trained WHERE room_id = $room_id";
$db->update($untrainQuery);
}
}