PHP – MySQL создает древовидный вид из таблицы продуктов

У меня есть таблица категории следующим образом. Который я экономлю категорию, подкатегории в этой таблице (Несколько подкатегорий). Моя таблица выглядит так:

id | name | parent_of | created_on -------+---------------+---------------+--------------------- 1 | Name 1 | 0 | 2013-05-1 00:00:00 -------+---------------+---------------+--------------------- 2 | Name 2 | 0 | 2013-05-1 00:00:00 -------+---------------+---------------+--------------------- 3 | Name 3 | 1 | 2013-05-1 00:00:00 -------+---------------+---------------+--------------------- 4 | Name 4 | 1 | 2013-05-1 00:00:00 -------+---------------+---------------+--------------------- 5 | Name 5 | 3 | 2013-05-1 00:00:00 -------+---------------+---------------+--------------------- 6 | Name 6 | 3 | 2013-05-1 00:00:00 -------+---------------+---------------+--------------------- 

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

Следующее дерево

 1 |--> 3 | |--> 5 | |--> 6 |--> 4 2 

Я немного запутался в запросе. Кто-нибудь может мне помочь, пожалуйста ?

заранее спасибо

Для основного дисплея вы можете использовать:

 SELECT * FROM `Table` WHERE `parent_of` = 0; 

Он даст вам все корневые узлы.


Когда пользователь нажимает на узел, он / она / отправляет запрос серверу (возможно, Ajax) для извлечения дочерних узлов для щелчка, например:

 $node = abs((int)$_GET['node']); 

тогда:

 SELECT * FROM `Table` WHERE `parent_of` = {$node}; 

Пожалуйста, попробуйте приведенную ниже логику кода для вашего решения,

 $result = mysql_query("SELECT id, parent_of FROM category WHERE parent_of > 0"); $treeStructure = array(); while($row = mysql_fetch_array($result)) { $id = $row['id']; $parentID = $row['parent_of']; $treeStructure[$parentID][] = $treeStructure[$id]; }