0

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

这是我用于此的 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

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

有人可以帮我吗..

谢谢你。

4

2 回答 2

1

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

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

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

于 2013-01-16T10:37:03.047 回答
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;
    }
}
于 2013-01-16T10:40:26.127 回答