- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Доброго времени суток, уважаемые. Занимаемся вопрос реализации алгоритма кластеризации категорий. Идея такова:
Есть 'категория', её id = 10,
В неё входит 'подкатегория' id = 1012,
в неё входит 'подподкатегория' id = 101218
Думаю идея ясна, что для вывода полного уровня вложенности (графа) для подподкатегории, нужно "потрошить" её id и тогда уже вытаскивать её подкатегорию и категорию.
Вот теперь вопрос по поводу реалзиации алгоритма. Первое что пришло в голову:
Естественно будут случаи, когда нужно сделать выборку лишь категории, зная её подкатегорию или самой категории.
Минусы данного решения - 3 запроса MySQL. Готов рассмотреть идеи со сложным запросом и манипулированием ф-ций LEFT, RIGHT и MID
Хотелось бы услышать ваше мнение. Кто какие еще видит решения?
$cid = '101218';
такой конструкцией вы сами себя поставите в тупик
$cid = '10_12_18';
Так вы, возможно увидите свет в туннеле.
$cid = '101218';
такой конструкцией вы сами себя поставите в тупик
$cid = '10_12_18';
Так вы, возможно увидите свет в туннеле.
cid - это id категорий, он хранится в бд под типом int(). Нерационально будет хранение в том виде, в каком предлагаете вы и с ним придется "изобретать много велосипедов".
101218 - хранение данных в таком виде дает возможность для большого диапазона подкатегорий и подподкатегорий.
Думаю помогут подзапросы
Вот вам в помощь
http://club.shelek.ru/viewart.php?id=307
cid - это id категорий,
т.е. вы не рассматривает возможности категории с id=1
или id = 100
Вот вам в помощь
http://club.shelek.ru/viewart.php?id=307
cid - это id категорий,
т.е. вы не рассматривает возможности категории с id=1
или id = 100
Все правильно. Диапазон категорий будет формально от 11 до 99, диапазон подкатегорий будет от
1111-9999, подкатегорий 111111-999999.
Минусы данного решения - 3 запроса MySQL.
Почему три? Я тут вижу только один запрос.
siv1987, Ну смотрите сами. Если cid подходит по первому условию, то из бд вытаскивается подподкатегория и у cid отрезается последние 2 символа, таким образом он подходит по второму условию, где cid==4, для cid==2 аналогично
Подзапросы возникают на момент поиска родителей, поиска дочерних элементов, т.е на момент прохождения по дереву.
Но никак не на момент прямого доступа к элементу.
siv1987, Ну смотрите сами. Если cid подходит по первому условию, то из бд вытаскивается подподкатегория и у cid отрезается последние 2 символа, таким образом он подходит по второму условию, где cid==4, для cid==2 аналогично
У вас есть $cid = '101218', что мешает его разобрать на составные ид и выбрать категории одним запросом - id IN ( implode(',', $cids) )?
Понял, в вашей идеи что-то есть. Тогда у нас должен быть запрос такого вида
можно сделать так:
Но вот нельзя делить сам $cid=101218 на средствами MySQL, чтоб получался вот такой вот смысл id IN ( '101218', '1012', '10' ), но без велосипеда на php