sql >> Databáze >  >> RDS >> Mysql

Zaškrtávací políčka se odhlašují náhodně

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);
    }
}



  1. Křížový dotaz s dynamickými sloupci v SQL Server 2005 nahoru

  2. 4 způsoby, jak zobrazit seznam všech zobrazení v MySQL

  3. PostgreSQL nepoužívá částečný index

  4. Nejlepší postup pro ukládání uživatelských jmen a hesel v databázích MySQL