簡體   English   中英

PHP Select下拉選項值數組

[英]PHP Select dropdown Option value array

我正在嘗試按行對結果進行選擇下拉過濾器,如果有任何道理!

本質上,我有一個表,表中有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>";

*由於某種原因,我的代碼未包括我的第一個回聲,它只是select的ID名稱,即supervisor_id_1

關於我要去哪里的任何想法?

更新:

刪除了更新,因為這是另一個問題。

在您的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>";

您需要為值標簽加上引號:

value="$var"

總而言之,回顯末尾有一些引號。

您需要組合兩個字符串或連接變量,而無需組合字符串,它總是返回最后一個回聲值。 例如: $ex='A1'; $ex.='B1'; $ex.='C2'; $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>";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM