Ihre Logik hat die folgenden Fehler:Ihr $_POST
Array hat den Schlüssel untrain
und sein Wert ist ein internes Array von Schlüsseln room_id
(weil sie im Kontrollkästchennamen enthalten sind) und Werte user_id
(Werte des Kontrollkästchens). In Ihrer foreach-Schleife $room_id
hat die Werte von Checkboxen zugewiesen, die tatsächlich user_ids
sind . Außerdem sollten Sie über $_POST['untrain']
iterieren , ich weiß nicht, woher Sie diesen Schlüssel $room->room_id
nehmen von.
Ich würde das ändern in:
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);
}
}
Oder, wenn Sie ein Array aller room_ids haben, können Sie darüber iterieren, um zu prüfen, ob welche aktiviert sind:
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);
}
}