На первый взгляд может показаться, что вам нужна простая таблица для реализации структуры, которая позволила бы вам создать вложенный массив структуры категории.Любая категория с parent_id == 0
является optgroup
, и тогда вы бы перечислили каждую подкатегорию как option
внутри каждого родителя optgroup
.
category_id | parent_id | category_name
1 | 0 | About us
2 | 1 | About us
3 | 0 | Products
4 | 3 | foo
5 | 3 | oof
6 | 0 | Support
7 | 6 | Support
Это будет выведено как:
<form method="post" action="postArticle.php">
<p>
<select name="selectedOption">
<optgroup label="About us">
<option value="2">About us</option>
</optgroup>
<optgroup label="Products">
<option value="4">Foo</option>
<option value="5">Oof</option>
</optgroup>
<optgroup label="Support">
<option value="6">Support</option>
</optgroup>
</select>
</p>
Очевидно, что затем вы можете сохранить значение из выбора в таблице товаров для ссылки на таблицу категорий.Обратите внимание, что вы не можете выбрать родительские категории в приведенном выше, только подкатегории (что вы можете иметь в виду).Очевидно, что если бы у вас было много групп только с одной подкатегорией (которая дублирует имя родительской категории), то это не очень эффективно, и вы можете посмотреть, как вы структурируете свои категории, или вместо этого вы можете отказатьсяoptgroup
в целом и просто визуально сделать отступ для меток подкатегорий в каждой категории.Таким образом, каждая категория (включая родителей) становится option
и может быть выбрана, чего вы, возможно, не хотите.