PHP - MySQL从产品表创建树视图

时间:2013-06-03 06:48:25

标签: php mysql sql hierarchical-data

我有一个类别表如下。我在该表中保存类别,子类别(多个子类别)。我的表看起来像

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

我对查询感到有点困惑。 有人可以帮帮我吗?

提前致谢

2 个答案:

答案 0 :(得分:2)

对于基本显示,您可以使用:

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

它将为您提供所有根节点。


当用户点击一个节点时,他/她/它向服务器提交请求(可能是Ajax)以获取点击的子节点,如:

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

然后:

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

答案 1 :(得分:0)

请为您的解决方案尝试以下代码逻辑,

$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];                
}