1

我正在做一个项目,其中一部分是一个表单,管理员可以通过该表单创建许多子管理员。在此表单上有四个复选框,管理员选中这些复选框为子管理员设置不同的权限。但是,此表单是可编辑的,这意味着当管理员想要编辑子管理员的某些信息时,类似的表单会打开,并在从数据库中获取的各个字段中填充值。所以管理员填写以下信息:姓名、电子邮件、密码、权限(4 个复选框)

稍后,如果管理员想要编辑子管理员信息,他会从子管理员列表中选择该子管理员,然后打开相同的表单,其中包含相同的字段,但填充的字段中的值来自 db。所以它就像:姓名:ABC,电子邮件:abc@def.com,密码:1234,权限(选中 1 或 2 或 3 或 4 个复选框)

现在我想要的是当管理员单击更新按钮时,子管理员的信息与复选框一起更新。因此,在更新信息时,管理员可以删除或授予子管理员新的权限。例如,如果以前的子管理员只有三个权限,那么在更新时,管理员可以授予或删除权限,并且该子管理员可以拥有管理员授予他的 1 个或 2 个或 4 个权限(以前是 3 个)。我已经为此编写了代码,但正在发生的事情是在更新时在数据库表中创建了三个新行。因此,如果该子管理员在表中具有与他关联的 1、2、3 权限,那么在更新时,1、2、3 会在每次连续更新时一次又一次地创建。这是我的逻辑: 1. 从 db 表中获取所有权限,并通过表单获取权限。2. 如果表单的权限等于 db 表的权限,则什么也不做。3. 如果来自 db 表的权限不等于来自表单的权限,则删除不在表单权限中的 db 表权限。4.如果来自表单的权限不等于来自数据库表的权限,则将来自表单的权限添加到数据库表。我的代码如下:

$subadmin_permission = $_POST['subadmin_permission'];   // permissions from form collected as an array
$query_select = "SELECT permission_name FROM ftv_subadmins_permissions WHERE subadmin_id='$subadmin_id'";
$result_select = mysql_query($query_select);
$all_permissions['all_permissions'] = array();
while($row = mysql_fetch_array($result_select))
{
    $all_permissions['all_permissions'][] = $row['permission_name'];    // permissions from database collected as an array
}

    if(empty($subadmin_permission))
    {
    }
    else
    {
        $query = "UPDATE ftv_subadmins_login_info SET subadmin_name='$subadmin_name', subadmin_mobile='$subadmin_mobile', ".
                 "subadmin_email='$subadmin_email', subadmin_address='$subadmin_address', subadmin_city='$subadmin_city', ".
                 "subadmin_state='$subadmin_state', subadmin_country='$subadmin_country' WHERE subadmin_id='$subadmin_id'";
        $result = mysql_query($query);

        if($result)
        {
            foreach($all_permissions['all_permissions'] as $value)
            {
                if(in_array($value, $subadmin_permission))
                {
                }
                if(in_array($value, $subadmin_permission) != TRUE)
                {
                    foreach($all_permissions['all_permissions'] as $value)
                    {
                        $query_permission_delete = "DELETE FROM ftv_subadmins_permissions WHERE permission_name='$value' AND subadmin_id='$subadmin_id'";
                        $result_permission_delete = mysql_query($query_permission_delete);

                        if($result_permission_add)
                        {
                            $msg = "<span style='color:green; font-weight:bold;'>Sub-admin details has been updated</span>";
                        }
                        else
                        {
                            $msg = "<span style='color:red; font-weight:bold;'>Sub-admin details could not be updated</span>";
                        }
                    }
                }
            }

            foreach($subadmin_permission as $value)
            {
                if(in_array($value, $all_permissions['all_permissions']) != TRUE)
                {
                    foreach($subadmin_permission as $value)
                    {
                        $query_permission_add = "INSERT INTO ftv_subadmins_permissions(subadmin_id, permission_name, permission_value, permission_creation_date)" .
                                            "VALUES('$subadmin_id', '$value', 'Y', NOW())";
                        $result_permission_add = mysql_query($query_permission_add);
                    }
                }
            }
        }
4

1 回答 1

0

请在编辑表单中渲染复选框时使用以下脚本

<input type="checkbox"  <?php if($row['permission1']=='value1')  {
             echo 'checked="checked"';  } ?> name="permission1" id="permission1" 
value="value1" />
于 2013-05-07T08:51:21.467 回答