0

Я использую модель списка смежности для поиска подкатегорий на своем веб-сайте. У меня есть PHP-код для поиска всех категорий и подкатегорий, но теперь я не могу понять, как использовать это для создания навигационной системы. Вот как сайт будет работать, очень простой:Adjacency List Model + Навигация по сайту

URL Строка Там будет основной категории, а затем уровни

index.php категория = категория имя & level1 = суб- категория & level2 = другая-суб-категории & level3 = контентного пункт

Позже я сделать SEO дружественных связей.

URL, без подкатегорий Где Уровень 1 является элементом контента

www.website.com/category/content-item/

URL с подкатегорий Если уровни 1, 2, 3 и т. Д. Являются подкатегориями, а конечным уровнем является элемент контента

www.website.com/category/sub-category/sub-category-2/content-item/

Вот код, я использую, чтобы найти категории и подкатегории. В настоящее время он просто выводит список всех категорий и подкатегорий, а число - на уровне каждого ребенка. Не уверен, что это помогает, он просто создает список.

function display_children($ParentCategoryID, $Level) { 

     // retrieve all children of parent 

     if ($ParentCategoryID == ''){ 
      $Result = mysql_query('SELECT * FROM categories WHERE parent_category_id IS null'); 
     } 
     else{ 
      $Result = mysql_query('SELECT * FROM categories WHERE parent_category_id="'.$ParentCategoryID.'";'); 
     } 

     // display each child 
     while ($Row = mysql_fetch_array($Result)) { 

      echo str_repeat('-',$Level)."[".$Level."]".$Row['category_name']."<br />"; 

      display_children($Row['category_id'], $Level + 1); 

     } 

    } 
+0

Это все здорово, но в чем вопрос? – bububaba

+0

@bububaba Вопрос в том, как мне перейти на мой контент? Скажем, в моей базе данных есть таблица под названием «content». В этой таблице находится строка с категорией id '3'. Если '3' является дочерним элементом' 2', а '2' является дочерним элементом' 1', а '1' является родителем, как создать систему для правильного отображения содержимого по категории и подкатегориям? Итак, с домашней страницы вы нажимаете '1' для просмотра' ​​2', затем нажмите '2', чтобы просмотреть' 3', затем нажмите '3', чтобы просмотреть' content'. Конечным результатом будет «1 => 2 => 3 => страница содержания». Я не знаю, имеет ли это смысл, надеюсь, это так. Благодарю. –

+0

Кроме того, таблица 'content' просто знает идентификатор категории самой низкой подкатегории. У меня есть другая таблица под названием «категории», чтобы сообщить каждой категории, если она имеет родителя или нет. –

ответ

0

Этот вопрос задается первым для options on how to represent hierarchical data in a database.

Список пристрастий отлично подходит для его простоты и делает изменения легкими, но может быть ужасным, потому что это приводит к рекурсивному коду, например, к вашей функции выше, на практике, которая является убийцей производительности под нагрузкой. Наилучший подход, отсутствующий в изменении модели данных, - using MySQL session variables to retrieve the entire hierarchy in one query, который возвращает все данные, необходимые в одном вызове базы данных. Даже это, однако, приводит к низкой производительности при нагрузке - меньше, чем рекурсивная функция - но все же не очень хорошая; и, я пишу по опыту :).

Если бы это был я, я бы использовал либо вложенные наборы, список смежности в сочетании с некоторыми денормализациями, такими как таблица Bridge и плоская таблица, или просто таблица Lineage. Действительно зависит от того, как часто данные изменяются, и если вам нужно, чтобы эти изменения делались легко. Все эти параметры должны быть намного быстрее, чем работать, а не только на столбцах идентификаторов родительского и дочернего элементов.

 Смежные вопросы

  • Нет связанных вопросов^_^