За последние 24 часа нас посетили 62902 программиста и 1748 роботов. Сейчас ищут 914 программистов ...

Разделы каталога (неограниченное)

Тема в разделе "PHP и базы данных", создана пользователем lamok, 26 июн 2014.

  1. lamok

    lamok Активный пользователь

    С нами с:
    16 июн 2008
    Сообщения:
    64
    Симпатии:
    1
    Подскажите, как организовать единственную таблицу c разделами каталога (с неограниченным вложением)?

    Вот пример с 2 вложениями
    структура таблицы

    id name parent
    1 Масло 0
    2 Фильтры 0
    3 Синтетическое 1

    т.е. если parent=0 то это раздел(основной), а если не <>0 то подраздел относящийся к разделу с id

    Как сделать дальще? под подраздел и т.д.?
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Указываешь parent другого раздела
    Код (Text):
    1. id  name               parent
    2. 3   Синтетическое      1
    3. 4   Прозрачное         3
    4. 5   Не прозрачное      3
    5. 6   Прозрачное дешевое 4
     
  3. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    очень просто, делаешь столбец с ID родительской категории, если значение пустое, значит нет родительской категории и категория является основной т.е.:

    примерно как то так, авто основная категория, масло и фильтры идут как подкатегории авто, а синтетическое как подкатегория масла
     
  4. lamok

    lamok Активный пользователь

    С нами с:
    16 июн 2008
    Сообщения:
    64
    Симпатии:
    1
    Хорошо, допустим остановились на этой структуре таблицы (у основной категории parent_cat = NULL) :

    id_cat | name_cat | parrent_cat
    1 | масло | NULL
    2 | фильтры | NULL
    3 |синтетическое | 1
    4 |5W30 | 3

    тогда при ссылки вида: http://www.domain.com/catalog/category/масло/синтетическое/5w30
    т .е получилось мы вошли во вложение вида:

    +масло
    __+синтетическое
    ____+5w30

    Как сделать запрос к таблице чтобы потом вывести каталог в том виде который он должен быть (указан выше)?
     
  5. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Ну, тут либо делать запросы рекурсивно (например, http://www.sql.ru/forum/441309/php-vyvod-dereva-kategoriy#4316254), либо с РНР извращаться. Можно смеха ради сделать без рекурсии и в один проход. Получится замечательный велосипед чисто академического значения
     
  6. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    5W30 что то типа уникального названия, вот и бери из URL только последнее слово и по нему ищи в базе.
    Код (Text):
    1. SELECT FROM my_table WHERE name_cat LIKE '5w30'
    PS интересно правильно написал запрос или нет.
     
  7. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Нет, надо like '%5w30%'.
    Но я бы не советовал, потому что тогда по запросу, например, "таран" может найтись самоходная артиллерийская установка и аэрозоль от клещей (если вдруг они будут продаваться в одном магазине).
     
  8. lamok

    lamok Активный пользователь

    С нами с:
    16 июн 2008
    Сообщения:
    64
    Симпатии:
    1
    Впринципе реализовать при слылке вида : http://www.domain.com/catalog/category/масло/синтетическое/5w30
    получается, а вот как реализовать если ссылка будет вида: http://www.domain.com/catalog/5w30?

    Не могу даже понять как перебирать данные чтобы понять кто родитель, кто каталог, и насколько глубоко вложение.