Vaše logika má následující chyby:vaše $_POST
pole má klíč untrain
a jeho hodnota je vnitřní pole klíčů room_id
(protože jsou v názvu zaškrtávacího políčka) a hodnoty user_ids
(hodnoty zaškrtávacího políčka). Ve smyčce foreach $room_id
přiřadil hodnoty zaškrtávacích políček, což jsou ve skutečnosti user_ids
. Kromě toho byste měli iterovat přes $_POST['untrain']
, Nevím, kde berete ten klíč $room->room_id
od.
Změnil bych 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);
}
}
Nebo, pokud máte pole všech room_ids, můžete je iterovat a zkontrolovat, zda jsou zaškrtnuta:
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);
}
}