Twoja logika ma następujące wady:Twój $_POST
tablica ma klucz untrain
a jego wartością jest wewnętrzna tablica kluczy room_id
(ponieważ są w nazwie pola wyboru) i wartości user_id
(wartości pól wyboru). W pętli foreach $room_id
przypisał wartości pól wyboru, które w rzeczywistości są user_ids
. Poza tym powinieneś iterować przez $_POST['untrain']
, nie wiem, gdzie bierzesz ten klucz $room->room_id
z.
Zmieniłbym to na:
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);
}
}
Lub, jeśli masz tablicę wszystkich identyfikatorów room_id, możesz je iterować, aby sprawdzić, czy które są zaznaczone:
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);
}
}