【问题标题】:Getting checkbox values through form POSTing通过表单 POST 获取复选框值
【发布时间】:2015-06-16 08:20:48
【问题描述】:

我正在尝试从表单中获取复选框值。该复选框是一个“您希望注册我们的时事通讯”类型的框。

我已经设法让它工作,但只有当该框被以下代码打勾时:

$signUp = $_POST['sign-up'][0];
if ($signUp !== 'Yes'){
    $signUp = 'No';
}

复选框如下所示:

<input type="checkbox" id="sign-up" name="sign-up[]" value="Yes" />

问题是,如果该框选中,那么我会收到未定义的错误。

推断该框是否已被选中的正确方法是什么?我只需要在电子邮件中发送“否”值,因此我将此文本硬编码到变量中。

如何在 PHP 中获取选中或未选中复选框的值

【问题讨论】:

    标签: php forms checkbox


    【解决方案1】:

    你可以这样做 -

    $signUp = !empty($_POST['sign-up'][0]) ? 'Yes' : 'No'; // Will check if the checkbox is checked or posted
    

    不需要 - if ($signUp !== 'Yes'){

    如果是单个checkbox,那么 -

    <input type="checkbox" id="sign-up" name="sign-up" value="Yes" />
    

    还有

    $signUp = !empty($_POST['sign-up']) ? 'Yes' : 'No';
    

    会正常工作。

    【讨论】:

      【解决方案2】:
      if(isset($_POST['sign-up'][0]) && !empty($_POST['sign-up'][0]))
      {
          $signUp = 'Yes';
      }
      else
      {
          $signUp = 'No';
      }
      

      【讨论】:

        【解决方案3】:

        名称末尾有 [] 告诉 PHP 您希望将结果放在一个数组中(并暗示您希望有多个结果)。

        这意味着您需要进行两项检查:

        • 是否检查了任何个值?
        • 检查了哪些值?

        这样的:

        <?php
            if (isset($_POST['sign-up'])) {
                $signUp = $_POST['sign-up'][0];
                if ($signUp !== 'Yes'){
                    $signUp = 'No';
                }
            }
        

        如果您不发送多个值(其中隐含“是”作为值),则从名称中删除 [],然后您可以使用 isset($_POST['sign-up']) 作为您唯一的测试。

        【讨论】:

        • “检查了哪些值?” – 这很难确定输入字段名称是否只是 sign-up[],因为我们都知道未选中的复选框 no name=值对将被提交。因此,为了能够告诉 which 复选框在哪里被选中,应该预先指定索引,name="sign-up[0]"name="sign-up[1]" 等(或非零基/非数字索引,如果更多适合数据结构。)
        猜你喜欢
        • 2011-11-12
        • 1970-01-01
        • 2016-09-20
        • 2013-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多