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

その命名規則では、チェックボックス名から数値を解析する必要があります。

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 に答える
1

subcategory3[]名前を からに変更することをお勧めしsubcategory[3][]ます。

これを行った後、 を実行するvar_dump($_POST['subcategory'])と、情報がどのように送信されるかがわかります。完全な情報が 1 つの配列に含まれています。

これ以外に、あなたの問題が何であるかわからないので、問題が発生している場所をもう少し具体的に教えてもらえますか?

于 2013-01-16T10:37:03.047 に答える