首页 > 解决方案 > PHP 选择下拉选项值数组

问题描述

如果有任何意义,我正在尝试按行对结果进行选择下拉过滤器!

本质上,我有一个表,其中有 5 行,每行都有不同的日期 - 每行都有一个下拉列表,其中包含可在该日期工作的用户列表。我让所有用户都正确显示,并且我有它过滤当天无法工作的用户 - 唯一的问题是它似乎只针对第一个结果执行此操作。

例如,例如;

用户 A 无法在 10/06/2019 和 11/06/2019 工作 - 用户 A 不会显示在日期为 10/06/2019 的行的下拉列表中,但会显示在日期为 11/06/2019 的行中。

用户 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>";

*由于某种原因,我的代码不包括我的第一个回显,它只是选择的 id 名称,即 supervisor_id_1

关于我哪里出错的任何想法?

更新:

删除了更新,因为它是一个不同的问题。

标签: phpmysqlselecthtml-selectdropdown

解决方案


在您的 IF 和 ELSE 中,您都有一个

$row = mysqli_fetch_array($result);

那是从结果集中读取第一行,但您没有在输出中使用。只需删除这两行,请参阅下面的代码以获取注释

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

推荐阅读