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 に答える