sql >> Databasteknik >  >> RDS >> Mysql

Kryssrutorna checkar ut slumpmässigt

Din logik har följande brister:din $_POST array har nyckeln untrain och dess värde är en intern uppsättning nycklar room_id (eftersom de finns i kryssrutans namn) och värdena user_id (kryssrutans värden). I din foreach loop $room_id har angett värdena för kryssrutor, som verkligen är user_ids . Dessutom bör du iterera över $_POST['untrain'] , jag vet inte var du tar den nyckeln $room->room_id från.

Jag skulle ändra det till:

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, om du har en uppsättning av alla rums-id:er, kan du iterera över dem för att kontrollera om vilka är markerade:

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. Postgresql:Hur undkommer man enstaka citattecken i databasutlösaren?

  2. mysql tillåter ogiltiga datum på utvalda

  3. Att få tabell finns inte fel, men tabellen finns (ActiveRecord::StatementInvalid Mysql2::Error:Tabell existerar inte)

  4. Hur man lägger till ELLER släpper kolumn från CDC-aktiverad tabell utan att förlora data i SQL Server Database - SQL Server Tutorial