我正在将一个PHP表单字段从一个下拉列表(选择单个值)更新为一个多选(选择多个值)。
我有2个数据库表,一个表中包含团队成员的完整列表,另一个表中包含选定的团队成员。
在PHP页面上,我想从完整的团队成员表中获取值,并将完整列表显示为多选表单字段。
然后,我希望能够从选定的团队成员表中获取值,并将其显示为上述完整多选列表中的选定选项。
关于如何实现此目标的任何想法吗?
这是我的代码,尽管现在它只是返回没有选定值的完整团队成员列表。
$query = "SELECT walkername FROM Team_Management WHERE active=1 ORDER BY walkername ASC";
$stmt = $mysqli->prepare($query) or die ("Couldn't execute query: ".mysqli_error($mysqli));
$stmt->execute();
$stmt->bind_result($walkers);
echo "<div class='form-group'>";
echo "<label class='col-lg-3 control-label' for='Walkers'>Walkers:</label>";
echo "<div class='col-lg-5'>";
echo "<select multiple class='form-control' name='walkers[]' id='Walkers'>";
while ($stmt->fetch()) {
echo "<option value='$walkers'>$walkers</option>";
}
echo "</select>";
echo "</div>";
echo "</div>";
$stmt->close();
**更新**
所以我应该添加的一件事是,SELECTED_TEAM_MEMBERS字段是一个逗号分隔的字段。
id ||步行者姓名
1 ||约翰
2 ||凯特
cid ||步行者
1 |约翰·雷·凯特
2 |凯特·马特·乔
此外,SELECTED_TEAM_MEMBER表中的walkers字段中的每个组都绑定到唯一的客户端ID(cid)。
那么我如何通过唯一的客户端ID从TEAM_MANAGEMENT表的完整列表中识别选定的步行者。
答案 0 :(得分:0)
您可以在SQL请求中使用布尔值获取所选用户的列表
SELECT walkername,
CASE WHEN **selected_team_members_name** > '' THEN '1' ELSE '0' END as is_selected
FROM Team_Management
LEFT OUTER JOIN **SELECTED_TEAM_MEMBERS** ON **selected_team_members_name** = walkername
WHERE active=1
ORDER BY walkername ASC
使用 selected_team_members_name 表中的列名称,并使用SELECTED_TEAM_MEMBERS表的名称
现在$ walker是带有2个键的数组:walkername和is_selected
然后您可以尝试在编写“ option”标签时是否将其设置为“ selected”属性
while ($stmt->fetch())
{
$selected = "";
if($walkers['is_selected'] == '1'){ //If your walker is selected
$selected = "selected";
}
echo "<option ".$selected." value=".$walkers['walkername'].">".$walkers['walkername']."</option>";
}
我可能不了解上下文,但希望我能对您有所帮助。