У меня есть три таблицы:MySQL: выберите категории, подкатегории и бренды. Только если они существуют
brands(id, name)
categories(id, name)
subcategories(id, category_id, name)
плюс таблица продуктов
products(id, category_id, subcategory_id, brand_id, [...])
Мне нужно построить меню на три уровня, и я с трудом делает это без запрашивая DB слишком много раз. В основном меню, как этот
Electronics -> Smartphones -> Samsung
Моя трудность создания дерева, как показано выше. Я не могу иметь, например, Electronics -> Smartphones -> Nike(I have Nike as a brand, but in this category/subcategory combo Nike is obviously not needed)
.
До сих пор я заканчивал циклы внутри петель, чтобы получать только бренды, которые существуют для каждой комбо, но это значительно увеличивает время загрузки.
Есть ли более эффективный способ сделать это?
В конце концов, я хотел бы иметь что-то вроде следующего
Electronics
Smartphones
Samsung
Apple
TVs
Samsung
Lg
Shoes
Sneakers
Nike
Converse
...
Это отлично работает, я должен изучить его лучше, чтобы понять его, но это все. Единственное, во втором if() это $ result-> subcategory_name не $ result-> category_name. Большое спасибо! –
Правильно, я отредактировал свое сообщение, чтобы исправить строку 'subcategory_name'. Возможно, вы захотите выполнить SQL-запрос в средстве phpMyAdmin (или аналогичном), чтобы увидеть результат, тогда вы лучше поймете код PHP. –
В качестве последующего вопроса, как вы собираетесь делать вложенные ul/li из вашего опубликованного кода? Я немного борюсь. –