【问题标题】:PHP get checkbox value in checked/unchecked [duplicate]PHP在选中/未选中状态下获取复选框值[重复]
【发布时间】:2014-05-20 12:01:35
【问题描述】:
<?php

// $groups is fetch_array from mysql
foreach($groups as $group) {
    if ($group['delete_user'] === 'Y') {
        $checked = "checked=\"checked\";
    }
    else {
        $checked = '';
    }
?>
    <input type = "checkbox" name="delete_user[<?php echo $group['id']; ?>]" <?php echo $checked; ?>>
<?php

}
?>

将输出:

<form action="test.php" method="post">
    <input type="checkbox" name="delete_user[1]">
    <input type="checkbox" name="delete_user[2]">
    <input type="checkbox" name="delete_user[3]">
    <input type="checkbox" name="delete_user[4]" checked="checked">
    <input type="submit" name="save_action" value="Save">
</form>

当我根据需要检查输入时,这将处理输入。

<?php
if(isset($_POST['save_action']) {
    if (empty($_POST['delete_user'])) {
        $_POST['delete_user'] = array();
    }
    foreach($_POST['delete_user'] as $del) {
        is_checked($del); //@todo 
    }
}
?>

我正在寻找方法来检查复选框是否被选中并返回正确的值( Y 或 N )。为此,我声明了 is_checked() 函数。

【问题讨论】:

  • $_POST['delete_user'] 将仅包含已检查的内容。
  • 好吧,按照 HTML 表单的工作原理,它只会 POST 被选中的复选框的值。

标签: php mysql


【解决方案1】:

我会这样做:

<form action="test.php" method="post">
    <input type="checkbox" name="delete_user[]" value="1">
    <input type="checkbox" name="delete_user[]" value="2">
    <input type="checkbox" name="delete_user[]" value="3">
    <input type="checkbox" name="delete_user[]" value="4" checked="checked">
    <input type="submit" name="save_action" value="Save">
</form>

现在在 PHP 中,您可以遍历 $_POST['delete_user'],它将包含所选项目的值。

foreach($_POST['delete_user'] as $item)
{
   // code to delete $item
}

【讨论】:

    【解决方案2】:

    正如前面提到的 cmets,只会设置选中的复选框 因此,您要么必须将索引作为 ID,要么将 val 添加到每个输入元素。 后者可能会更干净(在我看来)

    <?php
    // $groups is fetch_array from mysql
    foreach($groups as $group) {
        if ($group['delete_user'] === 'Y') {
            $checked = "checked=\"checked\";
        }
        else {
            $checked = '';
        }
    ?>
        <input type = "checkbox" name="delete_user[]" <?php echo $checked; ?> value="<?php echo $group['id'];?>">
    <?php
    }
    ?>
    

    以及处理输入的代码:

    <?php
    if(isset($_POST['save_action']) {
        if (empty($_POST['delete_user'])) {
            $_POST['delete_user'] = array();
        }
        foreach($_POST['delete_user'] as $del) {
            // do something with $del - the id
        }
    }
    ?>
    

    【讨论】:

      【解决方案3】:

      将复选框名称用作数组,然后将 id 作为值。请参阅下面的代码。

      <?php
      // $groups is fetch_array from mysql
      foreach($groups as $group) {
       if ($group['delete_user'] === 'Y') {
          $checked = "checked=\"checked\";
       }
       else {
          $checked = '';
       }
      ?>
       <input type = "checkbox" name="delete_user[]" value="<?php echo $group['id']; ?>" <?php echo $checked; ?>>
      <?php
      
      }
      ?>
      

      然后在操作页面上放置此代码

      <?php
            foreach($_POST['delete_user'] as $del) {
            is_checked($del); //@todo 
         }
      }
      ?>
      

      这会很好用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-07
        • 2021-12-05
        • 2012-10-25
        相关资源
        最近更新 更多