sql >> Database >  >> RDS >> Mysql

Selectievakjes worden willekeurig uitgecheckt

Uw logica heeft de volgende gebreken:uw $_POST array heeft de sleutel untrain en de waarde ervan is een interne reeks sleutels room_id (omdat ze in de naam van het selectievakje staan) en waarden user_id (waarden van selectievakjes). In je foreach-lus $room_id heeft de waarden van selectievakjes toegewezen, die inderdaad user_ids . zijn . Bovendien moet je $_POST['untrain'] . herhalen , ik weet niet waar je die sleutel mee naartoe neemt $room->room_id van.

Ik zou dat veranderen 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);
    }
}

Of, als u een array van alle room_ids heeft, kunt u deze herhalen om te controleren of deze zijn aangevinkt:

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. Hoe lees ik een postgresql citext-veld met npgsql 3.0.0?

  2. Selectieresultaat opslaan in variabele in Oracle-procedure

  3. Is er een combinatie van LIKE en IN in SQL?

  4. Hoe mysql willekeurig geheel getal bereik te krijgen?