![](/img/trans.png)
[英]PHP post how to get values of options inside a foreach loop to display the selected value
[英]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.