PHP & MYSQL Select выпадающий не фильтруется правильно на всех результатах - PullRequest
2 голосов
/ 10 июня 2019

Я пытаюсь правильно настроить раскрывающийся фильтр для запроса MySQL, но безрезультатно. Если праздничная дата равна дате инвентаризации, работник не должен отображаться в раскрывающемся списке.

Это работает только для первого результата строки, ниже приведены некоторые примеры;

Больше примеров;

  • Пользователь А не может работать 6/6/2019, поэтому он не показывает (это правильно)
  • и пользователь A также не могут работать 6/6/2019, но теперь отображаются для всех дат. (этого не должно быть)

Другой пример;

  • Пользователь А не может работать 6/6/2019, поэтому он не показывает (это правильно)
  • и пользователь B не может работать 6/6/2019, но теперь пользователь A снова показывает все даты. (этого не должно быть)

Другой пример;

  • Пользователь A & B не может работать 10/6/2019, поэтому пользователь B & User A не показывает (это правильно)
  • и пользователь B не может работать 6/6/2019, но теперь пользователь A снова показывает все даты. (этого не должно быть)
if ($available_date == $stk_date) {
    $query = "
        SELECT *
        FROM user_master
        WHERE id NOT IN (
            SELECT UM.id
            FROM user_master UM 
            JOIN bookings B ON B.id_item = UM.id
            JOIN stocktakes S ON B.the_date = S.stk_date
        )
    ";
    $result = mysqli_query($connect, $query);
    // $row = mysqli_fetch_array($result);
    if ($result) {
        while ($row = mysqli_fetch_array($result)){
            echo "<option value=$row[first_name]>$row[first_name]  $row[last_name]</option>'";
        }
    }
}
else {
    $query  = "SELECT * FROM user_master";
    $result = mysqli_query($connect, $query);
    // $row = mysqli_fetch_array($result);
    if ($result) {
        while ($row = mysqli_fetch_array($result)){
            echo "<option value=$row[first_name]>$row[first_name]  $row[last_name]</option>'";
        }
    }
}

Мне нужно выяснить, чтобы сделать это так;

Если пользователь A, B, C или D и т. Д. - не может работать 10/6/2019 - он не отображается ни в одном из раскрывающихся списков для строки 10/6/2019.

и если Пользователь A, B & C - не может работать 6/6/2019 - он не отображается ни в одном из выпадающих списков для строки 10/6/2019 и 6/11/2019, поскольку они помечены как не работающие в те дни.

Вот некоторые SQL-скрипты (когда я впервые использовал их, я не знал, как составить несколько таблиц), это лишь основные данные, которые я использую.

Обновление:

Я заметил, что это работает, если есть только одно «значение», если это имеет смысл, например,

  • Если я забронирую пользователя A 10 июня 2009 г., это сработает.
  • Но если я забронирую пользователя A, зарегистрированного 10/06/2019 и 11/06/2019, это не сработает.

  • Если я забронирую пользователя A & User B 10/06/2019, он будет работать

  • Хотя, если я забронирую пользователя B 11/06/2019, это не сработает.

Обновление 2:

Это 100% работает, как задумано, если в таблице только одна строка - если добавлена ​​вторая строка, она просто не работает и смешивает результаты. Почти как если бы запрос не работал правильно для каждой строки?

...