我有一个复选框列表,如下所示,数字416,419等表示页码。它们用于2组字段,一组是“likebutton”,另一组是“sendbutton”。
<input type="checkbox" name="likebutton[]" value="416" />
<input type="checkbox" name="likebutton[]" value="417" />
<input type="checkbox" name="likebutton[]" value="418" />
<input type="checkbox" name="likebutton[]" value="419" />
...more checkboxes
<input type="checkbox" name="sendbutton[]" value="416" />
<input type="checkbox" name="sendbutton[]" value="417" />
<input type="checkbox" name="sendbutton[]" value="418" />
<input type="checkbox" name="sendbutton[]" value="419" />
...more checkboxes
我想要实现的是当这些复选框被选中时,我能够为MySQL中的likebutton和sendbutton字段更新每行(页面)和Yes(Checked)或No(Unchecked)数据。目前我的mysql查询如下所示。这似乎只有当我有一个foreach函数并且如果我勾选一个或多个复选框时才有效,但如果我保留下面所述的代码或者如果我没有取消选中所有内容,则会出现foreach函数的错误。
foreach($_POST["likebutton"] as $pagenumberL)
$YesNoL = isset($_POST["likebutton"]) ? 'Yes' : 'No';
mysql_query("UPDATE pages SET likebutton='".$YesNoL."' WHERE page_id='".$pagenumberL."'");
foreach($_POST["sendbutton"] as $pagenumberS)
$YesNoS = isset($_POST["sendbutton"]) ? 'Yes' : 'No';
mysql_query("UPDATE pages SET sendbutton='".$YesNoS."' WHERE page_id='".$pagenumberS."'");
关于我的问题的任何指针或关于我应该如何进行的更好的建议?
答案 0 :(得分:3)
复选框的问题(正如您所注意到的)是未经检查的问题是不提交任何数据。
解决这个问题的标准技巧是......
<input type="hidden" name="field_name" value="0">
<input type="checkbox" name="field_name" value="1">
选中该复选框后,其值将按文档稍后显示的方式提交。如果未选中,则提交隐藏的输入值。
然后您可以简单地按名称检查值
$field = isset($_POST['field_name']) ? $_POST['field_name'] : false;
$dbFlag = $field ? 'Yes' : 'No';
在您的特定情况下,请在输入名称中包含page_id
,例如
<input type="hidden" name="likebutton[416]" value="0">
<input type="checkbox" name="likebutton[416]" value="1">
在PHP中
foreach ($_POST['likebutton'] as $pageId => $likeFlag) {
$dbFlag = $likeFlag ? 'Yes' : 'No';
// update DB
}