1

I have this form

<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>

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 ) 

even though ever single one should have the value of 2

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.

1 Answer 1

2

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

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

Then you get:

acts[0]
acts[1]

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" />

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.

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']).

Sign up to request clarification or add additional context in comments.

2 Comments

The only reason this won't work is because on submit I have like 11 indexes on the same name that is why I have it set the way I do, I don't think using the hidden input is what I am actually needing to do, I just don't know any other way of going about it
Thank you so much for your help, and pointing out my horrific use of over coding with implode and explode !!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.