Mysql
 sql >> база данни >  >> RDS >> Mysql

Квадратчетата за отметка се проверяват на случаен принцип

Вашата логика има следните недостатъци:вашият $_POST масивът има ключа untrain и неговата стойност е вътрешен масив от ключове room_id (тъй като те са в името на полето за отметка) и стойности user_id (стойностите на полето за отметка). Във вашия foreach цикъл $room_id е задал стойностите на квадратчетата за отметка, които наистина са user_ids . Освен това трябва да повторите $_POST['untrain'] , не знам къде вземаш този ключ $room->room_id от.

Бих променил това на:

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

Или, ако имате масив от всички room_ids, можете да преминете през тях, за да проверите дали кои са отметнати:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Бърз съвет:Използване на функцията DAYOFWEEK

  2. Дизайн на база данни:Съставен ключ срещу първичен ключ с една колона

  3. Как да дам генерирана от Trigger стойност в Hibernate ValueObject?

  4. SQL Server срещу MySQL:СЪДЪРЖА (*,'FORMSOF(THESAURUS,word)')

  5. mysql бавен при първата заявка, след това бърз за свързани заявки