我正在更新一个可以更新用户信息的小页面。
我有这个查询,我加入了两个数据库表:
SELECT * FROM users JOIN roles ON roles.id = users.`role_id` WHERE users.id=$id
要根据角色ID输出角色的名称,我创建了变量$ role
$role = $result["role_name"];
这样我就可以通过回复$role
我希望能够做的是拥有一个可以选择用户角色的表单。并使用所选属性显示用户当前角色。
与此类似的东西(我的旧解决方案):
<select name="role">
<?php
if ($role == 'Admin')
{
echo "<option value='Admin' Selected>";
}
else
{
echo "<option value='Admin'>";
}
echo "Admin </option>";
if ($role == 'User')
{
echo "<option value='User' Selected>";
}
else
{
echo "<option value='User'>";
}
echo "User </option>";
?>
</select>
但正如您所看到的,这不是很可扩展。如果我向我的数据库添加了一个新角色,我将不得不用另一个if语句手动更新我的选择代码。
因此我认为可以使用foreach语句代替。但我无法理解如何使用Selected属性标记用户当前角色。
要在阵列中获取我的所有角色,我已经完成了这个:
$sql = $db->prepare ("SELECT * FROM roles");
$sql->execute ();
$roles = $sql->fetchAll ();
阵列看起来像这样:
Array ( [0] => Array ( [id] => 1 [role_name] => Admin ) [1] => Array ( [id] => 2 [role_name] => User ) )
答案 0 :(得分:1)
您可以使用以下格式填充数据库中的一组角色:
$roles = array( "Admin" => 1, "User" => 2, ...);
然后在您的选择标记之间创建这样的选项:
foreach($roles as $k => $v)
{
$s = $role_id == $v ? "selected" : "";
echo("<option value='$v' $s>$k</option>");
}