设置未选中复选框php的值

2021-12-23 00:00:00 checkbox php

我有这个表格

<tr>
    <td>
        <input type="hidden" name="po[]" value="<?php echo $ord['id'] ?>" />
        <input type="hidden" name="acts[]" value="1" />
        <input id="acts" value='2' type="checkbox" <?php echo $check ?> name="acts[]" />
    </td>
    <td><img src="<?php echo $pnme['icon'] ?>" style="height: 25px; width: 25px; vertical-align: middle;" /><?php echo $pnme['name'] ?></td>
    <td><input id="per" style="background: #BDBDBD; width: 100px;" name="per[]" size="5" type="text" class="small" value="<?php echo $ord['fee'] ?>" /></td>
    <td><input id="dol" style="background: #BDBDBD; width: 100px;" name="dol[]" size="5" type="text" class="small" value="<?php echo $ord['cost'] ?>" /></td>
</tr>

如果未选中复选框,我试图让它传递不同的值,我有一个 hidden 输入,但它没有在我需要的地方正确传递值,当表单帖子这就是我处理信息的方式

I am trying to get it to pass a different value if the checkbox is not checked, I have a hidden input but it does not pass the values correctly where I need it to, when the form posts this is how I handle the information

    $po = implode(",", $_POST['po']);
    $po = explode(",", $po);

    $fee = implode(",", $_POST['per']);
    $fee = explode(",", $fee);

    $co = implode(",", $_POST['dol']);
    $co = explode(",", $co);

    $act = implode(",", $_POST['acts']);
    $act = explode(",", $act);
    print_r($act);
    for ($i = 0; ; $i++) {
    if ($i > count($po) - 1) {
        break;
    }

例如,如果我检查每个框,它会像这样设置数组

for example if I check every box it sets the array like this

Array ( [0] => 1 [1] => 2 [2] => 1 [3] => 2 [4] => 1 [5] => 2 [6] => 1 [7] => 2 [8] => 1 [9] => 2 [10] => 1 [11] => 2 [12] => 1 [13] => 2 [14] => 1 [15] => 2 [16] => 1 [17] => 2 [18] => 1 [19] => 2 [20] => 1 [21] => 2 ) 

即使任何一个都应该有 2 的值

even though ever single one should have the value of 2

我添加了这个试图将初始值设置为 1 认为如果选中该框它将覆盖该值,但情况似乎并非如此

I added this trying to set the initial value to 1 thinking that if the box is checked it would overwrite the value, but this doesn't seem to be the case

我不确定如何处理这种情况并使其与我的处理代码一起工作.

I am not sure how to handle this situation and make it work with my processing code.

推荐答案

[] 数组约定动态创建下一个索引,所以如果你有:

The [] array convention dynamically creates the next index, so if you have:

name="acts[]"
name="acts[]"

然后你得到:

acts[0]
acts[1]

需要保存checked和unchecked值的同名隐藏和checkbox输入需要有相同的索引,所以指定如下:

The hidden and checkbox inputs with the same name that need to hold the checked and unchecked value need to have the same index, so specify like:

<input type="hidden" name="acts[0]" value="1" />
<input type="checkbox" name="acts[0]" value="2" />

<!-- more checkboxes -->

<input type="hidden" name="acts[10]" value="1" />
<input type="checkbox" name="acts[10]" value="2" />

这将为您提供一个 $_POST['acts'] 数组,其中包含 11 个项目,索引 0-10,值为 12取决于它是否被检查.

This will give you a $_POST['acts'] array with 11 items, index 0-10 with the value either 1 or 2 depending on whether it was checked or not.

另外,我不知道你在用 implode()explode() 做什么.如果您只是想重新索引数字键,请使用 array_values($_POST['acts']).

Also, I have no idea what you are doing with the implode() and explode(). If you are just trying to reindex the numeric keys then use array_values($_POST['acts']).

相关文章