在PHP中的更改中插入数组值的复选框

时间:2016-12-22 20:07:13

标签: php mysql

所以,我正在运行此代码

<td><input type="checkbox" name="bill[]" <?php if ($row['BillBack'] === '1') echo "checked"; ?>></td>

每次都会创建一个复选框

while ($row1 = $result1->fetch_assoc()) {}

运行。所以,现在它有25个条目。 我想要单击提交按钮,如果选中复选框将1抛入数据库,如果不是,则抛出0.现在,检查是否选中了复选框数组的方法是

foreach($_POST['bill'] as $selected){
echo $selected."</br>";
}

,将返回&#34; on&#34;对于每个被选中的人。但是,我的SQL必须看起来像

"UPDATE Requests SET BillBack = '$bill' WHERE RequestID = $row['RequestID']"

所以我假设我需要将foreach循环放在while循环中。但是那回归了576&#34;&#34;&#34;
投掷

(!isset($_POST['bill'])) 

进入while循环不起作用,因为它似乎被设置,如果它们中的任何一个被设置,即使删除!只返回24&#34; on&#39; s&#34; (只有一个没有切换)。那么有没有一种方法,虽然我仍然有$行[&#39; RequestID&#39;]能够检查是否设置了每个复选框,然后在它仍然与之关联时将其扔进我的表中$ row?

1 个答案:

答案 0 :(得分:0)

添加$ row [&#34; requestID&#34;]作为复选框的值。然后你的账单[]将包含你需要的请求ID。

对于复选框,value属性的内容不会出现在用户界面中。 value属性仅在提交表单时有意义。如果在提交表单时复选框处于选中状态,则复选框的名称将与value属性的值一起发送(如果未选中该复选框,则不会发送任何信息)。

IOW,所有未经检查的复选框都不发送任何内容,因此如果只检查了两个,则数组中只有两个项目。没有价值,确定哪两个是不可能的。

foreach ($bill as $id) {
  UPDATE Requests SET BillBack = '1' WHERE RequestID = $id;
}

你可以使用&#34;&#34;来优化那个sql。但我在工作,没有时间