Votre logique a les failles suivantes :votre $_POST
tableau a la clé untrain
et sa valeur est un tableau interne de clés room_id
(car ils sont dans le nom de la case à cocher) et les valeurs user_id
(valeurs des cases à cocher). Dans votre boucle foreach $room_id
a assigné les valeurs des cases à cocher, qui sont bien des user_ids
. De plus, vous devez parcourir $_POST['untrain']
, je ne sais pas où vous prenez cette clé $room->room_id
de.
Je changerais cela en :
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, si vous avez un tableau de tous les room_ids, vous pouvez les parcourir pour vérifier si ceux-ci sont cochés :
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);
}
}