oli*_*rbj 0 php mysql checkbox
我有这个复选框:
<label>Maintenance Mode: <small>Tick to enable/disable.</small></label>
<input type="checkbox" name="maintenance" value="1" <?php echo $maintenance; ?> >
Run Code Online (Sandbox Code Playgroud)
我从我的数据库中获取数据.因此,如果在我的数据库中启用了维护,则将选中该复选框.这是这样的:
if($sdata['maintenance']==1):
$maintenance="checked='checked'";
else:
$maintenance="";
endif;
Run Code Online (Sandbox Code Playgroud)
问题是,每当我想要禁用维护时,它都不会更新数据库.它仍将设置为"1".
这是我发布的方式:
$maintenance = inputFilter($_POST['maintenance']);
Run Code Online (Sandbox Code Playgroud)
我的数据库表有两列:
setting_name和setting_value.在这种情况下,它将是:
maintenance 和 1
我这样更新:
foreach($_POST as $key => $value)
{
$value = inputFilter($value);
mysql_query("UPDATE settings SET setting_value='$value' where setting_name='$key' limit 1")
or die(mysql_error());
}
Run Code Online (Sandbox Code Playgroud)
每当我取消选中该复选框并保存设置时,都不会发生任何事情.我甚至试图$maintenance从帖子中获取echp ,当它未经检查时,值为0.
任何人都知道是什么原因造成的?
小智 5
未检查的复选框不会在POST请求中发送,因此其密钥不在$ _POST中
您应该检查复选框名称是否存在.
if(!isset($_POST['maintenance'])) {
// Checkbox is unchecked
}
Run Code Online (Sandbox Code Playgroud)