Din logik har følgende fejl:din $_POST
array har nøglen untrain
og dens værdi er et internt array af nøgler room_id
(fordi de er i afkrydsningsfeltets navn) og værdierne user_id
(afkrydsningsfeltets værdier). I din forestående løkke $room_id
har tildelt værdierne af afkrydsningsfelter, som faktisk er user_ids
. Desuden bør du iterere over $_POST['untrain']
, jeg ved ikke, hvor du tager den nøgle $room->room_id
fra.
Jeg ville ændre det til:
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);
}
}
Eller, hvis du har en række af alle room_id'er, kan du iterere over dem for at kontrollere, om de er markeret:
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);
}
}