【问题标题】:Insert Yes or No into MySQL based on checkbox value根据复选框值将是或否插入 MySQL
【发布时间】:2011-12-29 05:37:27
【问题描述】:

我有一个如下所示的复选框列表,数字、416、419 等代表页码。它们是针对两组字段的,一组是“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(选中)或 No(未选中)数据更新每一行(页面)。目前我的 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."'");

关于我的问题的任何指针或关于我应该如何进行的更好建议?

【问题讨论】:

  • 等等。为什么在 HTML 名称中使用括号?
  • 好问题,最初我有 ,但这并没有按照我想要的方式工作,所以我把它改成了我上面的,但没有意识到我把那些留在那里了。

标签: php mysql arrays checkbox insert


【解决方案1】:

复选框的问题(如您所述)是未选中的不提交任何数据。

解决这个问题的标准技巧是......

<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
}

【讨论】:

  • 你的第二个例子是我所采用的,它奏效了。感谢您的帮助和解释。
猜你喜欢
  • 2014-04-17
  • 1970-01-01
  • 2012-08-20
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
  • 1970-01-01
相关资源
最近更新 更多