0

我有一张这样的桌子:

+----+-------+--------+
| id | title | parent |
+----+-------+--------+
| 1  | text1 |  NULL  |
+----+-------+--------+
| 2  | text2 |  NULL  |
+----+-------+--------+
| 3  | text3 |  NULL  |
+----+-------+--------+
| 4  | text4 |   1    |
+----+-------+--------+
| 5  | text5 |   1    |
+----+-------+--------+
| 6  | text6 |   2    |
+----+-------+--------+
| 7  | text7 |   3    |
+----+-------+--------+
| 8  | text8 |   5    |
+----+-------+--------+

“父”是“id”的外键,我想在 html 中列出这些行。

列表应该是这样的:

• text1
    ○ text4
    ○ text5
        ♦ text8
• text2
    ○ text6
• text3
    ○ text7

我需要 sql_code 和 php。

谢谢...

4

2 回答 2

1

您应该考虑使用 MySQL 管理分层数据

SELECT 
     t1.title AS lev1, t2.title as lev2, t3.title as lev3, t4.title as lev4
FROM 
     category AS t1
LEFT JOIN 
     category AS t2 ON t2.parent = t1.id
LEFT JOIN 
     category AS t3 ON t3.parent = t2.id
LEFT JOIN 
     category AS t4 ON t4.parent = t3.id

请注意,本文推荐了一种不同于常见 parent_id/id 设置的方法。

于 2012-11-30T12:17:23.607 回答
0

上面的 MySQL 代码非常好.. 这是我对 PHP 代码的一点努力

while($lev = mysql_fetch_array($category)){

    echo $lev['lev1'];
    echo '<br>';
    if($lev['lev2'] != NULL)
    {
        &nbsp;echo $lev['lev2'];
        echo '<br>';
        if($lev['lev3'] != NULL)
        {
            &nbsp;&nbsp;echo $lev['lev3'];
            echo '<br>';
            if($lev['lev4'] != NULL)
            {
                echo $lev['lev4'];  
            }   
        }   
    }
}
于 2012-11-30T13:26:24.320 回答