Вашата логика има следните недостатъци:вашият $_POST
масивът има ключа untrain
и неговата стойност е вътрешен масив от ключове room_id
(тъй като те са в името на полето за отметка) и стойности user_id
(стойностите на полето за отметка). Във вашия foreach цикъл $room_id
е задал стойностите на квадратчетата за отметка, които наистина са user_ids
. Освен това трябва да повторите $_POST['untrain']
, не знам къде вземаш този ключ $room->room_id
от.
Бих променил това на:
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);
}
}
Или, ако имате масив от всички room_ids, можете да преминете през тях, за да проверите дали кои са отметнати:
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);
}
}