Sua lógica tem as seguintes falhas:seu
$_POST
array tem a chave untrain
e seu valor é um array interno de chaves room_id
(porque eles estão no nome da caixa de seleção) e valores user_id
(valores da caixa de seleção). Em seu loop foreach $room_id
atribuiu os valores das caixas de seleção, que são de fato user_ids
. Além disso, você deve iterar sobre $_POST['untrain']
, não sei onde você pega essa chave $room->room_id
a partir de. Eu mudaria isso para:
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);
}
}
Ou, se você tiver um array de todos os room_ids, você pode iterar sobre eles para verificar se estão marcados:
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);
}
}