如何处理复选框?

时间:2015-12-16 18:07:00

标签: php html checkbox

我有一个带有几个复选框的表单。您可以添加新表单或编辑旧表单。事情变得棘手。

如果我提交表单,PHP只会从CHECKED复选框中获取值。现在我更新数据库中的值。

如果我稍后更新/编辑表单并想要设置复选框UNCHECKED,则它不会获取值,也不会更新数据库中的值。

如何解决这个问题?请注意,具有相同名称的隐藏输入不是一个选项,因为我有几个具有相同名称的复选框:name="name[]"

<?php
//Get value from dp - for editing
$feature_one = get_term_meta( $term->term_id, 'feature_one', true );
$feature_two = get_term_meta( $term->term_id, 'feature_two', true );
$feature_three = get_term_meta( $term->term_id, 'feature_three', true );
//Etc, 25 in total
?>


<input type="checkbox" name="feature[]" id="feature-one" value="feature_one" <?php if (in_array("3", $feature_one)) { echo 'checked'; } ?> />
<input type="checkbox" name="feature[]" id="feature-two" value="feature_two" <?php if (in_array("3", $feature_two)) { echo 'checked'; } ?> />
<input type="checkbox" name="feature[]" id="feature-three" value="feature_three" <?php if (in_array("3", $feature_three)) { echo 'checked'; } ?> />
<!-- 25 in total -->

<?php
//Add (or update if editing) values on submit
foreach( $_POST['feature'] as $feature ) {

    if( isset( $feature) && '' !== $feature ) {
        $n_feature = $feature;
        update_term_meta( $term_id, $n_feature , 1 );
    }
} ?>

0 个答案:

没有答案