2

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

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


    }

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

我的需要是update_comment_meta通过将“0”作为第三个参数而不是“1”来对未检查的值执行该函数。

有关更多详细信息,我给出了生成 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>

您通常的帮助总是值得赞赏的。

4

2 回答 2

7

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

使用隐藏输入和复选框。复选框优先于隐藏输入。

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

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

有关更多信息,请参阅 发布未选中的复选框

于 2013-06-20T22:17:21.230 回答
1

这是我使用的解决方案(基于 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 发送的。

感谢您的时间。

于 2013-06-22T12:22:05.327 回答