- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева

Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Мы говорим о построении меню или о чём? category_id, parent_id, name, shortname, picture, bodytext, short_description - хотя бы это можно хранить в одной таблице. Ну и плюс всякие мета-теги, если они не различаются от региона посетителя или еще чего-нибудь. Я не предлагаю свойства товаров (если они к категории привязываются) хранить в той же таблице, это дебилизм же. А у нас никакой разной структурой и не пахнет.
---------- Добавлено 25.09.2018 в 16:19 ----------
pringlesday, пример запроса «без джоинов» в студию. И структуру таблицы заодно, если она отличается от представленной ТСом.
Я даже больше скажу. Берешь Simpla CMS 1.4 с любого торрента, смотришь содержимое файла Storefront.class.php
Здесь, тебя интересуют две функции:
Структура таблицы:
Я не топлю за это решение, просто оно подходит для решения задачи, хоть движок очень старый. Однако даже в то время он без всякого кеширования справлялся с каталогами из десятков тысяч товаров. Если нормально проставить индексы, то сотни тысяч.
P.S. ТС походу подзабил на тему. Видать, конкретно загрузили :) Или сидит втихаря кодит :D
Просто его загрузили сложными терминами, и он забил. Будет дальше сидеть с 2 уровнями вложенности.
---------- Добавлено 25.09.2018 в 16:23 ----------
Вроде бы форум должен нормально экранировать php, но с квадратными скобками накосячил.
Мы говорим о построении меню или о чём?
Нет. мы говорим не о построении меню, а о построении базы данных.
pringlesday,
$query = sql_placeholder("SELECT * FROM categories WHERE enabled=1 ORDER BY parent, order_num", $parent);
ето значит вытащит все поля из таблици категорий?
ви знаете сколько у меня будет строк в такой таблице.?
Миллионы
Пройдитесь по сайтам каталогам автозапчастей и посмотрите их структуру.
Там производителей может быть до 100. у каждого из них до 200 моделей
а у них свои узлы.
Запрос будет приблизительно такой. Строка кода может отличаться. В упомянутом мной движке sql_placeholder используется для защиты от SQL-инъекции. Как будет у вас - никто точно не скажет. Многое зависит от движка. Вообще лучше не делать костыли а использовать те функции, что уже предусмотрены или дорабатывать их.
ви знаете сколько у меня будет строк в такой таблице.?
Миллионы
Подгружайте тогда потомков аяксом, а выбирайте категории 1 уровня.
Просто его загрузили сложными терминами, и он забил. Будет дальше сидеть с 2 уровнями вложенности.
Зачем влезать, если вы даже не до конца поняли смысл обсуждаемого. Речь шла прежде всего о структуре БД для построения каталога, а не о построении дерева или многоуровневого меню, хотя последнее тоже может понадобиться, что ТС показал выше наглядно. В каталоге прежде всего нужно построение хлебных крошек, вывод дочерних категорий и элементов для тек. уровня иерархии, определяемого адресом запроса. А мой пример с двумя уровнями – это просто частный случай (кстати, если считать конечные элементы, то там получается три уровня, правда, этот уровень я обычно не отражаю в каталожной иерархии адресов, а делаю отдельно /product1 или /products/1). Я там рядом одним предложением описал решение для произвольного уровня вложенности. И даже в послед. посте написал, как можно контролировать уровень вложенности, если тупой пользователь или бот начнет лепить 100-компонентные пути (тебе хочется выполнять основанный на этом запрос к БД? Мне лично нет, т.к. я заранее уверен, что у меня точно не наберется столько уровней, и в конце запроса корневой узел будет многократно присоединять сам к себе во избежание явной ошибки – я обычно в корневом узле специально делаю «петлю»). Еще раз: с учетом конечных элементов ты многократно присоединяешь к таблице этих элементов таблицу категорий; без учета конечных элементов ты многократно присоединяешь к таблице категорий саму себя.
Зачем влезать, если вы даже не до конца поняли смысл обсуждаемого. Речь шла прежде всего о структуре БД для построения каталога, а не о построении дерева или многоуровневого меню, хотя последнее тоже может понадобиться, что ТС показал выше наглядно...
Вы сами попросили пример запроса. А ТС спросил, подойдёт ли его структура БД для реализации многоуровневого каталога. Я ответил примером, который очень похож на предложенный самим ТС. Если нужно построение хлебных крошек, вывод дочерних категорий и всё такое (сам ТС, кстати, до моего сообщения конкретно об этом не спрашивал), $category->path во втором листинге хранит путь к текущей категории. Все дочерние категории хранятся в $category->subcategories. Если нужно получать текущую категорию со списком подкатегорий (вместо целого каталога), то там есть функция category_by_url($categories, $url). Её листинг приводить не буду. Как я уже сказал, можете сами скачать и глянуть код. Повторюсь, ни с кем спорить не собираюсь. Мне задали вопрос, я ответил и, по-моему, достаточно развёрнуто.
Это шедеврально.
Либо это проделки тех, кто выкладывает nulled версии, либо такие разрабы. Самому смешно.
Вы сами попросили пример запроса.
Это было уже после того, как вы «влезли» :)
А ТС спросил, подойдёт ли его структура БД для реализации многоуровневого каталога.
Не совсем так:
я так понимаю что можно типа так...
но тогда как вытащить
ето ж сколько запросов делать нужно
Ему ответили, что делать нужно один запрос.
---------- Добавлено 26.09.2018 в 12:06 ----------
сам ТС, кстати, до моего сообщения конкретно об этом не спрашивал
Я влез, ответил на вопрос, привёл пример, причём не самопальный, а из реального движка. Если у ТСа сомнения, он может проверить работоспособность на своей системе как вашего, так и предложенного мной решения. Когда задача подразумевает несколько способов её решить, лучше их все рассмотреть, чтобы оценить трудозатраты и совместимость.
Пройдитесь по сайтам каталогам автозапчастей и посмотрите их структуру.
Там производителей может быть до 100. у каждого из них до 200 моделей
а у них свои узлы.
при чем тут производители и модели? речь шла о категориях... и категорий будет вряд ли больше тыщи-двух, не миллион...
для хранения вашего примера БД достаточно, а как вытаскивать и отображать это другая история, обычно описанная в ТЗ