PHP で MySQL データベースから階層データをネストされた HTML として取得する方法

Linda Hamilton
リリース: 2024-10-24 02:32:29
オリジナル
510 人が閲覧しました

How to Retrieve Hierarchical Data from a MySQL Database in PHP as Nested HTML?

PHP でのカテゴリ階層の取得

MySQL データベースでは、category_id とparent_id の列を持つ category という名前のテーブルに階層データを保存できます。 PHP を使用して階層構造でこのデータを取得するには、次の手順に従います。

  1. データベースからデータを取得します。

    SQL クエリを使用して、名前順に並べられたすべてのカテゴリを取得します:

    <code class="php">$sql = "SELECT category_id, parent_id, name FROM categories ORDER BY name";
    $result = $pdo->query($sql);</code>
    ログイン後にコピー
  2. 参照配列の作成:

    への参照を格納する連想配列 $refs を作成します。各カテゴリー。各参照には、parent_id プロパティと name プロパティが含まれます。親のないカテゴリ (parent_id = 0) の場合は、それらを $list 配列に追加します。

    <code class="php">$refs = array();
    $list = array();
    foreach ($result as $row) {
        $ref = &$refs[$row['category_id']];
        $ref['parent_id'] = $row['parent_id'];
        $ref['name'] = $row['name'];
        if ($row['parent_id'] == 0) {
            $list[$row['category_id']] = &$ref;
        } else {
            $refs[$row['parent_id']]['children'][$row['category_id']] = &$ref;
        }
    }</code>
    ログイン後にコピー
  3. ネストされた HTML リストの生成:

    $list 配列を使用してネストされた HTML リストを生成するための再帰関数 toUL を作成します。子をチェックし、それ自体を再帰的に呼び出してサブツリーを構築する必要があります。

    <code class="php">function toUL(array $array) {
        $html = '<ul>' . PHP_EOL;
        foreach ($array as $value) {
            $html .= '<li>' . $value['name'];
            if (!empty($value['children'])) {
                $html .= toUL($value['children']);
            }
            $html .= '</li>' . PHP_EOL;
        }
        $html .= '</ul>' . PHP_EOL;
        return $html;
    }</code>
    ログイン後にコピー
  4. 階層を表示します:

    toUL 関数を使用して生成します

  5. オブジェクトの配列レコードセットからネストされた HTML リストを取得するための役立つ例は、参考資料の「関連質問」セクションにあります。

以上がPHP で MySQL データベースから階層データをネストされた HTML として取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!