Logika Anda memiliki kelemahan berikut:$_POST
Anda array memiliki kunci untrain
dan nilainya adalah larik internal kunci room_id
(karena mereka berada di nama kotak centang) dan nilai user_ids
(nilai kotak centang). Di loop foreach Anda $room_id
telah menetapkan nilai kotak centang, yang memang user_ids
. Selain itu, Anda harus mengulangi $_POST['untrain']
, saya tidak tahu di mana Anda mengambil kunci itu $room->room_id
dari.
Saya akan mengubahnya menjadi:
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);
}
}
Atau, jika Anda memiliki larik semua room_ids, Anda dapat mengulanginya untuk memeriksa apakah yang dicentang:
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);
}
}