要检查和取消选中复选框的逻辑

时间:2013-05-07 08:42:02

标签: php checkbox updating

我正在开发一个项目,其中一部分是一个管理员可以创建许多子管理员的表单。在此表单上有四个复选框,由管理员检查以设置子托管的不同权限。但是这种形式是可编辑的意味着当管理员想要编辑子管理的某些信息时,类似的表单打开,其中的值填充在从数据库中提取的相应字段中。 所以管理员填写信息,如: 名称, 电子邮件, 密码, 权限(4个复选框)

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

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

$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);
                    }
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

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

<input type="checkbox"  <?php if($row['permission1']=='value1')  {
             echo 'checked="checked"';  } ?> name="permission1" id="permission1" 
value="value1" />