【问题标题】:saving group checkbox and option values保存组复选框和选项值
【发布时间】:2010-06-21 16:41:44
【问题描述】:

我有许多复选框,所有命名的功能,具有不同的值,我如何在 php 中收集它们的值以及在加载时保存重新填充表单的最佳方法是什么,以便它显示以前选择的值。

谢谢

【问题讨论】:

  • 复选框需要唯一的名称,因为每个都是不同的真/假值。只有收音机可以共享名称,因为收音机是“几个之一”。
  • @banzaimonkey — 垃圾。复选框没有真/假值,它们具有作者定义的值,并且如果选中则成功(在这种情况下它们被提交)(如果没有,则不成功)。您可以轻松地拥有一组具有相同名称的复选框,然后遍历它们以查看值是什么。
  • @David Dorward 这一直困扰着我一整夜。 PHP 处理 POST 的方式是构造一个数组,其中 namekeyvaluevalue。因此,如果您有多个具有相同名称的复选框,则只有最后一个会保留,因为任何具有相同名称的后续键都将替换前一个。所以我的原始评论是正确的,在某种程度上,“真/假”被理解为布尔值而不是明确的“真”和“假”值。命名复选框isset() == trueisset() == false。 DOM != PHP 从标头中得到什么。
  • PHP 很奇怪。与大多数表单处理库不同,它会丢弃多个具有相同名称的值(最后一个除外),除非该名称以字符 [] 结尾。

标签: php checkbox


【解决方案1】:

复选框的生成方式如下:

<input type='checkbox' name='mycheck' value="1" /> Unchecked checkbox
<input type='checkbox' name='mycheck' value="1" checked /> Checked checkbox

所以你会用类似这样的代码输出它们:

<input type='checkbox' name='<?=$checkName?>' <?=$checked?'checked':''?> value="1" /> <?=$checkLabel?>

要重新显示,您需要根据用户的帖子准备适当的变量。您可以将它们全部放在一个数组中,然后循环生成它们。

复选框的一些技巧:

  1. 未选中的复选框不会发布,即您根本不会在帖子中找到它们。这意味着您不能只循环检查复选框。您必须循环使用您的全部可能性,并检查该可能性是否存在(选中)或不存在(未选中)。或者,您可以取消设置模型中的所有可能性,然后仅检查帖子中存在的可能性。
  2. 可以使用数组将它们组合在一起,如下所示:
未选中复选框 未选中复选框

您将在您的 POST 中获得一个名为 $_POST['options'] 的数组,其中 check1 和 check2 作为您的键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2018-10-27
    • 1970-01-01
    • 2016-09-03
    相关资源
    最近更新 更多