2014-12-30 4 views
2

У меня есть основная-категория и подкатегория:Сделать выбор с двумя опциями?

Category: applications 
Subcategory: windows 
Category: applications 
Subcategory: linux 
Category: movies 
Subcategory: xvid 

Вот мой <select>:

<select name="category"> 
    <optgroup label="APPLICATIONS"> 
     <option value="applications[windows]">Windows</option> 
     <option value="applications[Linux]">Linux</option> 
    </optgroup> 
    <optgroup label="MOVIES"> 
     <option value="movies[xvid]">Xvid</option> 
    </optgroup> 
</select> 

Есть хороший способ для PHP, чтобы понять, какое это Main- категории и подкатегории после отправки формы?

Другой способ, о котором я думаю, это: applications_windows, а затем взорвать знак подчеркивания.

ответ

1
$data = array(
    'applications' => array(
     'windows', 'linux' 
    ), 
    'movies' => array(
     'xvid' 
    ) 
); 

$select = '<select name="category">'; 
foreach($data as $catName => $catData){ 
    $select .= '<optgroup label="'.$catName.'">'; 
    foreach($catData as $item){ 
     $select .= '<option value="'.$catName.'['.$item.']">'.$item.'</option>'; 
    } 
    $select .= '</optgroup>'; 
} 
$select .= '</select>'; 

echo $select; 

Это вернет это:

This will return this.

+0

Извините, я, возможно, вас смутил, фактический вопрос находится в конце моего сообщения, я обновил его сейчас. – Kupigon

+1

Ну, когда вы отправляете форму, используйте '' 'print_r ($ _ POST ['category'])' '', и вы увидите что-то вроде '' '[category => array ('applications' => 'windows')] '' '. Это то, что ты хочешь, верно? Обратите внимание, что вы используете все элементы в одном и том же select, sou, если не мультиселектив, вы получите только одно значение. – mend3

+0

Вот в чем проблема: я вижу это: Array ([category] => applications [windows]), но я хочу увидеть его как массив ... – Kupigon

Смежные вопросы