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

时间:2013-01-16 10:31:18

标签: php

我创建了一个表单来显示主要类别及其子类别。这种形式的一切都是动态创建的。为什么我使用此表单是为了获取从用户中选择的子类别值。在这里,我使用复选框来实现此目的。

这是我用于此的PHP ..

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

然后生成类似这样的HTML ......

<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

在这种情况下,您可以看到动态生成的子类别名称。 (subcategory3,subcategory4,subcategory5)。这些值也可能根据所选的主要类别而变化。在这里,我想知道如何使用ISSET()验证子类别值。因为我不知道检测来自$ _POST数组的值是什么..

有人能帮帮我..

谢谢。

2 个答案:

答案 0 :(得分:1)

我建议将名称从subcategory3[]更改为subcategory[3][]

执行此操作后,执行var_dump($_POST['subcategory']),您将看到如何发送信息,您将在单个数组中获得完整信息。

除此之外,不确定你的问题是什么,你能否更具体地说明你遇到麻烦的地方?

答案 1 :(得分:1)

使用该命名约定,您必须解析复选框名称中的数字:

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

除此之外,您可以为数组添加维度并使用:

<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

这意味着您可以在$_POST['subcategory']中以阵列形式访问它们:

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