使用多个复选框更新多行

时间:2017-04-11 07:44:13

标签: php

我正在努力使用下面的表单发布和处理我的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的隐藏字段,但这不起作用,而且我宁愿更优雅地处理它。

2 个答案:

答案 0 :(得分:1)

当您处理checkbox时,请记住一件事,只有那些被选中的checkbox与表单提交一起提交。因此,要发送所有复选框而不管checked/unchecked使用Jquery迭代每个复选框并检查复选框是否已选中,然后在数组中推送1,否则0并将该数组发送到服务器并在服务器上处理它。

答案 1 :(得分:1)

未选中的复选框必须在相关数据库列中具有默认值“0”或“false”或null等。

复选框的值为0/1,因此您可以使用ENUM类型的列,默认值为“0”。这适用于数据库中与复选框相关的列。

因此,当您不更新它们时,因为它们未发布,它们仍将具有默认值。

但如果您仍希望将其发布在表单提交上,则可以使用此链接上的答案Post the checkboxes that are unchecked