【问题标题】:PHP - MySQL create a tree view from product tablePHP - MySQL 从产品表创建树视图
【发布时间】:2014-01-19 07:55:34
【问题描述】:

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

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

我对这个查询有点困惑。 谁能帮帮我?

提前致谢

【问题讨论】:

标签: php mysql sql hierarchical-data


【解决方案1】:

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

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

它会给你所有的根节点。


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

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

然后:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-05-11
      • 2012-07-30
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多