0

重複の可能性:
一連の親子関係を階層ツリーに変換するにはどうすればよいですか?

私はWebアプリケーションに取り組んでいます。ナビゲーションデータベースを駆動したいと考えています。マルチレベルのナビゲーション、ところで。ここで難しいのは、テーブルを 1 つだけ使用したいということです。見て、読んで、検索しましたが、答えが見つかりませんでした。

私のテーブル構造は

ID | NAME | LINK | ALC | PARENT_ID |

0    Home   #      0     0

1    Ops    #      0     0

2    ops1   #      0     1

3    ops2   #      0     1

問題は、サブカテゴリでリストタグを作成できるように、データベースのコンテンツを配列で取得する方法です

<ul>
    <li>HOME</li>
    <li>OPS
        <ul>
            <li>ops1</li>
            <li>ops2</li>
        </ul>
    </li>
</ul>
4

2 に答える 2

0

これは再帰関数と呼ばれ、自分自身を呼び出します。概念実証:

function printUL($parentID = 0){
    // select elements with PARENT_ID = $parentID (or PARENT_ID = NULL if 0)
    if(!$children){
        return;
    }
    // now print stuff
    echo '<ul>';
    foreach($children as $child){
        echo '<li>';
            echo $child['NAME']; // change as you need
            printUL($child['ID']); // functions calls itself to dig deeper
        echo '</li>';
    }
    echo '</ul>';
}
// call for root element
printUL($parentID);

それが理にかなっていることを願っています。必要に応じて変更してください。

于 2012-10-29T15:41:50.933 に答える
-1
function myTree($parent_id) {
   $sql = mysql_query("SELECT category_id, category_name 
                       FROM categories 
                       WHERE parent_id='$parent_id'");
   if(mysql_num_rows($sql) != 0) {
       echo '<ul>'; 
       while($row = mysql_fetch_array($sql)) {
           echo '<li>' . $row['category_name'];

           myTree($row['category_id']);

           echo '</li>';
       }
       echo '</ul>';
   }
}

echo '<div>';

myTree(0);

echo '</div>';
于 2012-10-29T15:42:12.850 に答える