MySQL データベースでは、category_id とparent_id の列を持つ category という名前のテーブルに階層データを保存できます。 PHP を使用して階層構造でこのデータを取得するには、次の手順に従います。
データベースからデータを取得します。
SQL クエリを使用して、名前順に並べられたすべてのカテゴリを取得します:
<code class="php">$sql = "SELECT category_id, parent_id, name FROM categories ORDER BY name"; $result = $pdo->query($sql);</code>
への参照を格納する連想配列 $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>
$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>
toUL 関数を使用して生成します
以上がPHP で MySQL データベースから階層データをネストされた HTML として取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。