我有一个类别表如下。我在该表中保存类别,子类别(多个子类别)。我的表看起来像
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
我对查询感到有点困惑。 有人可以帮帮我吗?
提前致谢
答案 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];
}