验证和计算来自子类别的选定复选框值。

I have created a form to display main categories and its subcategories. Everything in this form is creating dynamically. Why I use this form is to get subcategory values which selected from users. Here I use checkboxes for this purpose.

This is PHP I use for this..

echo "<input type='checkbox' value='{cId:sId}' name='subcategory{$cId}[]' />{$sName}";

Then generating HTML something like this...

<h3>Main Category 01 
    <input type='checkbox' value='3:4' name='subcategory3[]' />sub category
    <input type='checkbox' value='3:6' name='subcategory3[]' />sub category

<h3>Main Category 02 
    <input type='checkbox' value='4:6' name='subcategory4[]' />sub category
    <input type='checkbox' value='4:2' name='subcategory4[]' />sub category

<h3>Main Category 01 
    <input type='checkbox' value='5:8' name='subcategory5[]' />sub category
    <input type='checkbox' value='5:4' name='subcategory5[]' />sub category

In this case you can see subcategory names generating dynamically. (subcategory3, subcategory4, subcategory5). Those values also may change according to the selected main category. Here I would like to know how I validate subcategory values with ISSET(). Because I dont know to detect what are values come from $_POST array..

Can someone help me out..

Thank You.

With that naming convention, you will have to parse the number out of the checkbox name:

foreach($_POST as $key => $value)
{
    if(strpos($key, 'subcategory') === 0 && is_array($value))
    {
        $subCategoryNumber = substr($key, 11);

        // loop over the values for this subcategory array:
        foreach($value as $checkboxValue)
        {
            echo 'subcategory checked: ' . $subCategoryNumber . ', value: ' . $checkboxValue;
        }
    }
}

Instead of that, you could add a dimension to your array and use:

<input type='checkbox' value='3:4' name='subcategory[3][]' />sub category

<input type='checkbox' value='4:6' name='subcategory[4][]' />sub category

<input type='checkbox' value='5:8' name='subcategory[5][]' />sub category

This would mean you can access them in $_POST['subcategory'] as an array:

foreach($_POST['subcategory'] as $key => $checkboxList)
{
    foreach($checkboxList as $checkboxValue)
    {
        echo 'subcategory checked: ' . $key . ', value: ' . $checkboxValue;
    }
}

I would recommend changing the name from subcategory3[] to subcategory[3][].

After you do this, do a var_dump($_POST['subcategory']), and you'll see how to information is sent, you will have the full information in a single array.

Other than this, not sure what your problem could be, can you be a bit more specific on where you're having trouble?