簡體   English   中英

如何在查詢中執行foreach循環以正確顯示列表中的選定選項

[英]How to execute a foreach loop in a query to correctly display selected options in a list

我在用戶表“團隊”中有七個列代表星期幾,該表存儲着用戶從九個每日范圍中選擇的索引。 表時間范圍范圍使用索引rangeID。 用戶從多個選擇列表中選擇一個或多個時間范圍,並以逗號分隔列表的形式存儲當天的索引:

+ ------ + ------- + --------- +
|星期日+星期一+星期二+
| ------- + ------- + --------- +
| 2,4,5 + 1,3 + 9 +
+ ------ + ------- + --------- +

我的挑戰是返回一個具有與用來選擇日期范圍相同的表示形式的div表,但是突出顯示(選中)所選的選項,以便可以在表單中顯示和/或編輯用戶的可用性。

我嘗試通過以下查詢在一天的星期日(星期日)中獲得該結果,但失敗了,結果是雖然所選選項正確顯示,但未選中的每個選項在select lst中顯示兩次:

echo "<select  multiple=\"multiple\" size=\"10\"  name=\"sun[]\">";
echo "<option size=\"30\"></option>";
$sql = "SELECT sun, rangeID, timeranges FROM  test, timerange ORDER BY rangeID";
foreach ($myconnect->query($sql) as $row) {
    $index=explode(',', $row['sun']);
    foreach($index as $sun) {
        if ($row['rangeID']==$sun) {
            echo "<option selected=\"selected>\" value='" . $row['rangeID'] . "'>" . $row['timeranges'] . "</option>";
        } else {
            echo "<option value='" . $row['rangeID'] . "'>" . $row['timeranges'] . "</option>";
       }
    }
}
echo "</select>";

某個地方的邏輯使我無法正常工作,因此我需要幫助糾正代碼,以便僅顯示九個時間范圍並選擇零,一個或多個選項。

經過一周的各種體操訓練,加上一頭白發之后,我得出了一個不優雅但很好的解決方案,因為該操作將由一個用戶(一次)調用以預先填充表格。 它比創建多個表(其中將有許多空行)來存儲9個索引的0-9索引要好得多。 我肯定會研究一種更高效的表結構,用於存儲用戶選擇的數據並一次查詢一個或多個用戶。

$sql = "SELECT sun FROM test";
foreach ($myconnect->query($sql) as $days)
{
  $index = explode(',', $days['sun']);
}
echo "<select  multiple=\"multiple\" size=\"9\"  name=\"sun[]\">";
$sql = "SELECT rangeID, timeranges FROM timerange ORDER BY rangeID";
foreach ($myconnect->query($sql) as $row)
{
  $arr = array_merge($index, $row);
  if ($row['rangeID'] == @ $arr[0] or @ $arr['rangeID'] == @ $arr[1] or $row['rangeID'] ==
     @ $arr[2] or $row['rangeID'] == @ $arr[3] or $row['rangeID'] == @ $arr[4] or $row[
     'rangeID'] == @ $arr[5] or $row['rangeID'] == @ $arr[5])
  {
    $selected = "selected=\"selected\"";
  }
  else
  {
    $selected = "";
  }
  echo "<option value=" . $row['rangeID'] . " " . $selected . ">" . $row['timeranges'] .
  "</option>";
}
echo "</select>";

暫無
暫無

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

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