2013-05-07 52 views
1

我正在开发一个项目,其中的一部分是管理员可以通过它创建许多子地址的窗体。在这种形式中,有四个复选框由管理员检查为子地址设置不同的权限。然而,当管理员想要编辑子地址的某些信息时,这种形式是可编辑的手段,类似的窗体打开时,数据从数据库中获取相应的字段。 所以管理员填写类似的信息: 名称, 电子邮件, 密码, 权限(4复选框)用于检查和取消选中复选框的逻辑

以后如果管理员想编辑subadmin信息,他将选择从subadmins列表和相同subadmin窗体打开时使用相同的字段,但填充的字段中的值来自数据库。因此,它是这样的: 名称:ABC, 电子邮件:[email protected], 密码:1234, 权限(1个或2或3或4复选框选中)

现在,当管理员点击更新我要的是按钮,该子地址的信息与复选框一起更新。因此,在更新信息时,管理员可以删除或赋予子管理员新的权限。例如,如果以前的子地址只有三个权限,那么更新管理员可以授予或删除权限,并且该管理员可以给予他(从以前的3个)给予1或2或4个权限。我已经为此编写了代码,但正在进行的更新是在数据库表中创建了三个新行。因此,如果该子地址在表中具有与他相关的1,2,3许可权,则更新1,2,3将在连续更新时反复创建。 这是我的逻辑: 1.从数据库表中获取所有权限,并通过表单获取权限。 2.如果表单权限等于数据库表的权限,则不执行任何操作。 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); 
        } 
       } 
      } 
     } 

回答

0

请使用以下脚本,而在编辑表单

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

卡皮尔渲染复选框,我已经在使用它,复选框显示正确检查。意思是如果一个子地址只有三个权限,只有三个复选框被选中,第四个被选中。我想这个问题是在上面的代码中的if($ result){}块。我想我没有正确应用逻辑。 – 2013-05-07 09:07:38

相关问题