我正在努力使用下面的表单发布和处理我的PHP脚本。目前它只会带来被选中的那些。我需要它传递值0,其中未选中复选框。然后我需要我的php迭代所有行并通过sql更新。
<form action="update.php" method="post">
<table class="table table-striped">
<tr class="name_5">
<input type="hidden" name="id[]" value="5" />
<td>
iD: 5 Name: Sam
</td>
<td>
<input type="checkbox" name="block1[]" value="1" />
</td>
<td>
<input type="checkbox" name="block2[]" value="1" />
</td>
<td>
<input type="checkbox" name="block3[]" value="1" />
</td>
<td>
<textarea name="notes[]" cols="20" rows="1"></textarea>
</td>
</tr>
<tr class="name_4">
<input type="hidden" name="id[]" value="4" />
<td>
ID: 4 Name: Joanne<br/>
</td>
<td>
<input type="checkbox" name="block1[]" value="1" />
</td>
<td>
<input type="checkbox" name="block2[]" value="1" />
</td>
<td>
<input type="checkbox" name="block3[]" value="1" />
</td>
<td>
<textarea name="notes[]" cols="20" rows="1"></textarea>
</td>
</tr>
<tr class="name_2">
<input type="hidden" name="id[]" value="2" />
<td>
ID: 2 Name: Fiona<br/>
</td>
<td>
<input type="checkbox" name="block1[]" checked value="1" />
</td>
<td>
<input type="checkbox" name="block2[]" checked value="1" />
</td>
<td>
<input type="checkbox" name="block3[]" value="1" />
</td>
<td>
<textarea name="notes[]" cols="20" rows="1"></textarea>
</td>
</tr>
</table>
</form>
我尝试使用每行使用值0的隐藏字段,但这不起作用,而且我宁愿更优雅地处理它。
答案 0 :(得分:1)
当您处理checkbox
时,请记住一件事,只有那些被选中的checkbox
与表单提交一起提交。因此,要发送所有复选框而不管checked/unchecked
使用Jquery迭代每个复选框并检查复选框是否已选中,然后在数组中推送1
,否则0
并将该数组发送到服务器并在服务器上处理它。
答案 1 :(得分:1)
未选中的复选框必须在相关数据库列中具有默认值“0”或“false”或null等。
复选框的值为0/1,因此您可以使用ENUM类型的列,默认值为“0”。这适用于数据库中与复选框相关的列。
因此,当您不更新它们时,因为它们未发布,它们仍将具有默认值。
但如果您仍希望将其发布在表单提交上,则可以使用此链接上的答案Post the checkboxes that are unchecked