我正在尝试从复选框( $mail_aspects['active']和$mail_aspects['aspect_id'] )中获取单个值。
但是使用下面的代码,我只能得到其$mail_aspects['active']=1的值。但是,我需要在DB中更新选中的和未选中的值。
有人能在这个问题上提供帮助吗?
<form method='post' style='display: inline-block;'>
<div class="col-md-12">
<?foreach ($customer['mail_aspects'] as $mail_aspects)
{ ?>
<table>
<tr>
<td>
<label>
<input type="checkbox" name="mail_aspects[]" <?=($mail_aspects['active'] == '1') ? 'checked' : ''?>
value="<?=$mail_aspects['active']?>,<?=$mail_aspects['aspects_id']?>">
<?=$mail_aspects['aspects_name']?>
</label>
</td>
</tr>
</table>
<? }?>
</div>
<button type='submit' name='submit' value='Submit'>Save Aspects</button>
</form>使用PHP
if(isset($_POST['submit'])){
$mail_aspectsdet=$_POST['mail_aspects'];
for($i=0;$i<count($mail_aspectsdet);$i++)
{
$exp=explode(',',$mail_aspectsdet[$i]);//Explode id and name
$stmt=$db->exec("UPDATE customer_preferences set active=$exp[0] where customer_id=$customerID and aspects_id=$exp[1]");
}
}发布于 2016-01-16 14:23:58
要在$_POST中接收未选中的复选框值,必须在添加复选框之前添加具有相同名称和空值的隐藏输入字段。如果未选中复选框,则将提交隐藏输入的空值,否则将提交复选框的值。
就您的情况而言,应该如下所示:
<form method='post' style='display: inline-block;'>
<div class="col-md-12">
<?foreach ($customer['mail_aspects'] as $mail_aspects)
{ ?>
<table>
<tr>
<td>
<label>
<input type="hidden" name="mail_aspects[<?=$mail_aspects['aspects_id']?>]" value="0" />
<input type="checkbox" name="mail_aspects[<?=$mail_aspects['aspects_id']?>]" <?=($mail_aspects['active'] == '1') ? 'checked' : ''?>
value="1">
<?=$mail_aspects['aspects_name']?>
</label>
</td>
</tr>
</table>
<? }?>
</div>
<button type='submit' name='submit' value='Submit'>Save Aspects</button>
</form>重要的是隐藏和复选框输入的名称是相同的。
PHP代码应该正常工作。
https://stackoverflow.com/questions/34825990
复制相似问题