sql >> Database teknologi >  >> RDS >> Mysql

Afkrydsningsfelter tjekker ud tilfældigt

Din logik har følgende fejl:din $_POST array har nøglen untrain og dens værdi er et internt array af nøgler room_id (fordi de er i afkrydsningsfeltets navn) og værdierne user_id (afkrydsningsfeltets værdier). I din forestående løkke $room_id har tildelt værdierne af afkrydsningsfelter, som faktisk er user_ids . Desuden bør du iterere over $_POST['untrain'] , jeg ved ikke, hvor du tager den nøgle $room->room_id fra.

Jeg ville ændre det til:

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

Eller, hvis du har en række af alle room_id'er, kan du iterere over dem for at kontrollere, om de er markeret:

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. Indsigt i SQL Server Unique Constraints

  2. `pg_tblspc` mangler efter installation af seneste version af OS X (Yosemite eller El Capitan)

  3. MySQL:sammenligning af heltalsværdi og strengfelt med indeks

  4. Sådan løses Mysql til mysql, da jeg har nogle problemer