У меня есть таблица категории следующим образом. Который я экономлю категорию, подкатегории в этой таблице (Несколько подкатегорий). Моя таблица выглядит так:
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]; }