PHP Выберите раскрывающийся список значений параметра - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь настроить мой фильтр выбора для результатов по строкам, если это имеет смысл!

По сути, у меня есть таблица, и в ней 5 строк, каждая с разной датой - в каждой строке есть раскрывающийся список со списком пользователей, которые могут работать в эту дату. У меня все пользователи отображаются правильно, и у меня он там, где он фильтрует пользователя, который не может работать в тот день - единственная проблема в том, что он, кажется, делает это только для первого результата.

Так, например;

Пользователь A не может работать 10/06/2019 и 11/06/2019 - Пользователь A не будет отображаться в раскрывающемся списке для строки, датированной 10/06/2019, но будет отображаться в строке, датированной 06.06.2009. .

Пользователь B может работать со всеми датами в таблице, поэтому будет отображаться во всех выпадающих списках.

Я пытался изменить мой массив и запрос, тоже пытался использовать счетчик, но никуда не попал!

     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>'";
           }
           }
     }

      echo "</select></td>";

* По какой-то причине мой код не включает мое первое эхо, это просто имя идентификатора выбора, который является supervisor_id_1

Есть идеи, где я иду не так?

Обновление:

Удалено обновление, так как это другой вопрос.

Ответы [ 3 ]

1 голос
/ 10 июня 2019

Как в вашем IF, так и в ELSE у вас есть

$row = mysqli_fetch_array($result);

, который читает первую строку из вашего набора результатов, но вы не используете в своем выводе. Просто удалите эти 2 строки, см. Код ниже для аннотаций

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

    // remove, its just throwing your first result away 
    //$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);

    // remove, its just throwing your first result away 
    //$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>'";
        }
    }
}

echo "</select></td>";
0 голосов
/ 10 июня 2019

Вам нужно объединить две строковые или конкатенационные переменные, без объединения строки, она всегда возвращает последнее значение эха. Например: $ex='A1'; $ex.='B1'; $ex.='C2';

Result - A1B1C2

Ваш вопрос Ответ:

$string = "<td><select>";
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);
     if ($result) {
       while ($row = mysqli_fetch_array($result)){
         $string.="<option value=".$row['first_name'].">".$row['first_name']." ".$row['last_name']."</option>'";
       }
     }
 }else{
   $query = "SELECT * FROM user_master";
     $result = mysqli_query($connect, $query);
     if ($result) {
       while ($row = mysqli_fetch_array($result)){
         $string.="<option value=".$row['first_name'].">".$row['first_name']." ".$row['last_name']."</option>'";
       }
     }
 }
$string.="</select></td>";
0 голосов
/ 10 июня 2019

Вам нужны кавычки для тега значения:

value="$var"

В общем, в конце эха есть несколько цитат.

...