在POST变量中还包括未选中的复选框 - 多个复选框

时间:2013-06-20 20:53:33

标签: php html wordpress checkbox http-post

我在php文件中使用下面的代码从多个复选框中获取值。

    if(!empty($_POST['check_list'])) {
        foreach($_POST['check_list'] as $check) {
                update_comment_meta($check, 'consider', 1);
        }


    }

问题是这段代码显然只是在数组$_POST['check_list']中放入了检查值。

我需要通过将'0'作为第三个参数而不是'1'来对函数update_comment_meta执行未调整的值。

有关详细信息,请提供生成HTML表单的代码:

<form action="" id="primaryPostForm" method="POST">

<?php    
         $defaults = array(
    'post_id' => $current_post); 
         $com= get_comments( $defaults );

        foreach ($com as $co) {
    if(get_comment_meta($co->comment_ID, 'consider', true)==1) {
    ?><input type="checkbox" name="check_list[]" value="<?php echo $co->comment_ID; ?>" checked="checked">

    <?php }
    else {
    ?><input type="checkbox" name="check_list[]" value="<?php echo $co->comment_ID; ?>" >
    <?php
    }}
</form>

您的日常帮助总是受到赞赏。

2 个答案:

答案 0 :(得分:7)

将未经检查的值发送到post有点不那么容易。更好的解决方案是您以一种方式命名复选框,您可以在帖子页面中轻松地对其进行迭代。

使用隐藏输入以及checkbox.Checkbox优先于隐藏输入。

<form>
  <input type='hidden' value='0' name='check_box_con'>
  <input type='checkbox' value='1' name='check_box_con'>
</form>

现在提交后,因为两者都有相同的名称,check_box_con将显示隐藏的字段值,如果未选中,否则将覆盖并显示原始值。

了解更多信息 Post the checkboxes that are unchecked

答案 1 :(得分:0)

这是我使用的解决方案(基于PeeHaa评论):

        if(!empty($_POST['check_list'])) {
        foreach ($com as $co) {

        if (in_array($co->comment_ID,$_POST['check_list']))
        update_comment_meta($co->comment_ID, 'consider', 1);

        else 
         update_comment_meta($co->comment_ID, 'consider', 0);
        }
        }

事实上,POST变量与复选框一样工作,因此简单的方法是使用服务器端语言来了解未通过POST发送的值。

感谢您的时间。