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

選択した親のツリーメニューを表示

    あなたの解決策に1つの問題があります。 IDを確認するときif($id == $record->id) ツリーの現在のレベルにのみ一致します。つまり、id =2でDellを選択すると、最初の反復と一致しないため、関数は次のレベルに移動しません。

    選択したメニューへのパスを追跡する必要があります。

    あなたの場合。デルを選択すると、「コンピュータ」のみが表示されますよね?

    このようなものはどうですか:

    ...
      function rederTreeById($records, $path) {
            echo '<ul>';
            foreach($records as $record) {
                    if(in_array($record->id, $path)) {
                            echo '<li>'.$record->title;
                            if(!empty($record->childs)) {
                                    rederTreeById($record->childs, $path);
                            }
                            echo '</li>';
                    } else {
                            echo '<li>'.$record->title.'</li>';
                    }
            }
            echo '</ul>';
     }
    
     function getPath($id) {
        $path = array();
        $current=$id;
        $path[] = 1
        while(!is_null($categories[$current]->parent_id)) {
            $current=$categories[$current]->parent_id
            $path[] = $current;
        }
        return $path;
     }
    
    
    $selectedId = 1;
    
    
     rederTreeById($rootCategories, getPath($selectedId));
    ...
    



    1. php / mysqlで結果セットと一緒に列名を取得するにはどうすればよいですか?

    2. SQL SERVER:2つの日付の間の合計日数を取得します

    3. mysqlストアドプロシージャ:limitステートメントで宣言された変数を使用するとエラーが返されます

    4. ネイティブテーブル'performance_schema'。'???'構造が間違っています