我在一个项目上工作,它的一部分是一个表格,通过它管理员可以创建许多子管理员。在此表单上有四个复选框,管理员可以选中这些复选框,以便为子管理员设置不同的权限。然而,这个表单是可编辑的,这意味着当管理员想要编辑子管理员的一些信息时,类似的表单会打开,值填写在相应的字段中,这些字段是从数据库中提取的。因此管理员填写的信息如下:姓名、电子邮件、密码、权限(4个复选框)
稍后,如果admin想要编辑subadmin信息,他会从subadmin列表中选择该子管理员,打开相同的表单,显示相同的字段,但字段中的值来自db。因此它类似于:名称: ABC,电子邮件: abc@def.com,密码: 1234,权限(选中1或2或3或4个复选框)
现在我想要的是,当管理员点击更新按钮,子管理员的信息会随着复选框一起更新。因此,在更新信息时,管理员可以删除或赋予subadmin新的权限。例如,如果以前的subadmin只有三个权限,那么在更新时,admin可以授予或删除权限,而该子管理员可以拥有1个、2个或4个权限(之前为3个)。我已经为此编写了代码,但是在更新时,在数据库表中创建了三个新行。因此,如果子管理员在表中具有与其关联1,2,3权限,则在更新时,会在eah连续更新时一次又一次地创建1,2,3。这是我的逻辑: 1.从db表中获取所有权限,并通过表单获取权限。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);
}
}
}
}发布于 2013-05-07 16:51:21
在编辑表单中呈现复选框时请使用以下脚本
<input type="checkbox" <?php if($row['permission1']=='value1') {echo 'checked="checked"'; } ?> name="permission1" id="permission1" value="value1" />
https://stackoverflow.com/questions/16414787
复制相似问题