【问题标题】:PHP dynamic checkboxesPHP 动态复选框
【发布时间】:2011-01-22 08:25:08
【问题描述】:

我想将数据库中的所有角色显示为复选框并检查当前用户已经在其中的角色。

问题:我如何才能选中用户已经担任该角色的复选框。

<?php
// DB QUERY: get role names
// ------------------------------------------------------------------
$get_roles = mysqli_query($conn, "SELECT RoleName FROM roles")
or die($dataaccess_error);

$get_user_in_roles = mysqli_query($conn, "SELECT RoleName FROM users_in_roles WHERE UserId = $user_id")
or die($dataaccess_error);
// ------------------------------------------------------------------

// user in roles
while($row2 = mysqli_fetch_array($get_user_in_roles))
{
    $user_in_role = $row2['RoleName'];
}

// echo out role names
while($row1 = mysqli_fetch_array($get_roles))
{
    $role_name = $row1['RoleName'];
    echo '<label class="label"><input type="checkbox" name='.$role_name.' class="checkbox">'.$role_name.'</label>';
}
?>

【问题讨论】:

    标签: php dynamic checkbox


    【解决方案1】:

    我会将$user_in_role 设为一个数组,然后将第一个while 循环中的语句更改为$user_in_role[] = $row2['RoleName'];(这会将角色名称附加到数组中)。然后,在回显复选框时,在 class="checkbox"&gt; 之间添加:

    ' . (in_array($role_name, $user_in_role) ? ' checked="checked"' : '') . '

    【讨论】:

    • 正是我想要的。谢谢!
    【解决方案2】:
    <input checked='checked' type='checkbox' ... />
    

    您也可以disable输入字段。

    <input checked='checked' disabled='disabled' type='checkbox' ... />
    

    有效地标记和禁用复选框。

    【讨论】:

    • 我很确定禁用该复选框会使该值不被发布,因此取决于您如何处理它可能会导致一些奇怪的情况(例如,缺少相当于不被发布的值检查?)。
    • @Tom Smilack 我通常有一个隐藏的input 具有预期值以保持表单一致性。尽管如此,这是一个很好的输入。谢谢。
    • @Scott W. 抱歉,缺少细节。虽然您正在寻找一般指导。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多