sql >> データベース >  >> RDS >> Mysql

ネストされた順序なしリストを使用してツリーを構築する

    うーん、これを達成する方法については、オンラインで利用できる例が必要だと思います。それらのいくつかは、階層データを格納するための新しい方法についてさえ話しているかもしれません、そしてあなたは読みが面白いと思うでしょう。

    とにかく、再帰に基づくこのコードスニペットは、HTMLの実現に役立つ可能性があります。

    <?php
    // recursive function to generate the category HTML
    function generateTree ($parent) {
        global $arrPCat, $arrCat;
        if (array_key_exists($parent, $arrPCat)) {
            echo '<ul' . ($parent == 0 ? ' class="tree"' : '') . '>';
            foreach ($arrPCat[$parent] as $arrC) {
                echo '<li>' . $arrC['name'] . '</li>';
                generateTree($arrC['id']);
            }
            echo '</ul>';
        }
    }
    
    // read all categories from the DB
    $rs = mysql_query('SELECT  `cl`.`id`, `cl`.`name`, `c`.`position`, IFNULL(`c`.`parent_id`, 0) AS `parent_id`
        FROM  `categories_locale`  `cl`
        LEFT JOIN  `categories`  `c` ON  `cl`.`id` =  `c`.`id`
        ORDER BY  `c`.`parent_id` ,  `c`.`position`');
    while ($r = mysql_fetch_assoc($rs)) {
        // store parent and its children into the $arrPCat Array
        $arrPCat[$r['parent_id']][] = Array (
                                        'id' => $r['id'],
                                        'name' => $r['name']
                                      );
    }
    generateTree (0); // now generate the HTML for the category tree
    ?>
    

    お役に立てば幸いです。



    1. mysqlテーブルでインデックスを作成する列を設定すると、O(1)が確実に検索されますか?

    2. mysqlクエリを保存してphpWebページからExcelファイルに保存します

    3. csv日付形式をmysqldbに変換する方法

    4. OracleからPostgreSQLへの移行-知っておくべきこと