【问题标题】:PHP form one checkboxPHP表单一个复选框
【发布时间】:2013-02-20 05:49:33
【问题描述】:

我遇到了一个令我非常困惑的问题。我有一个带有一个复选框的表单。如果复选框被选中,我需要表单应用 1 或 0 的值。

<input type="checkbox" name="admin">

然后是 PHP,像这样:

$update_data['admin'] = isset($_POST['admin']) ? '1' : '0';

如果它被选中,它就会起作用。我不确定如何进入“关闭”状态。

【问题讨论】:

  • 那么它是否有效?
  • 如果复选框被选中,它可以工作。如果不选中,我得到的值不是 0。

标签: php forms checkbox


【解决方案1】:

PHP代码需要改一下

$update_data['admin'] = empty($_POST['admin']) ? '0' : '1';

isset() 将仅检查该值是否已设置,即 Null 或 Not。在你的情况下,它设置为零

另一方面,检查两个值是否都设置为 null 并且值为零,如果其中任何一个为 true,则返回 true。

在 HTML 中

<input type='checkbox' value ='1' name='admim'>

【讨论】:

    【解决方案2】:

    当提交的复选框没有值时,如果从 $_POST['admin'] 检索到,则其值为“on”。我想你也可以这样做

    $update_data['admin'] = ($_POST['admin'] === 'on') ? '1' : '0';
    

    【讨论】:

    • 但是我怎么才能“关闭”呢?
    • 为什么需要“下车”?如果它不是“打开”,update_data['admin'] 将变为“0”。这不就是你想要达到的吗?
    • 补充一点,最好先检查isset($_POST['admin']),然后再检查它是否具有“on”值。否则,它会抛出一个通知:未定义索引,当它没有设置时。我更喜欢在没有任何通知的情况下工作。
    • 勾选与否都是“开启”。它总是返回值 1。
    • 您解决了这个问题吗?我不知道为什么它一直在“开启”。
    【解决方案3】:

    检查是否使用isset 定义了某些内容与获取其值不同。试试这个:

     <input type="checkbox" name="admin" value="checked_or_whatever_value_you_like">
    
     if(isset($_POST['admin'])){
         $update_data['admin'] = $_POST['admin'] == 'checked_or_whatever_value_you_like' ? '1' : '0';
     }
    

    【讨论】:

      【解决方案4】:

      一切都应该按预期工作:)

      只是为了确保 for 已提交:

      管理员

      如果未选中复选框,则值(及其键)将不会传递给查询字符串。

      所以,检查

      If (isset($_POST['submit'])){
        $update_data['admin'] = isset($_POST['admin']) ;
        //actions if form has been submitted.
      }
      

      【讨论】:

        【解决方案5】:

        它似乎对我有用,这是我的示例代码:

        <form action="" method="POST">
            <input type="checkbox" name="admin">
            <input type="submit">
        </form>
        <?php 
            $check = isset($_POST['admin']) ? '1' : '0';
            echo $check;
            var_dump($check);
        ?>
        

        选中复选框时将生成 1 个字符串 (1) "1",未选中则生成 0 个字符串 (1) "0"。

        【讨论】:

          【解决方案6】:

          我在另一个帖子中找到了answer。与:

          $update_data['admin'] = ($_POST['admin'] == 1) ? '1' : '0';
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-10-06
            • 1970-01-01
            • 2011-02-08
            相关资源
            最近更新 更多