Dans une base de données MySQL, vous pouvez stocker des données hiérarchiques dans une table nommée catégories avec des colonnes pourcategory_id et parent_id. Pour récupérer ces données dans une structure hiérarchique à l'aide de PHP, suivez ces étapes :
Récupérer les données de la base de données :
Utilisez une requête SQL pour récupérer toutes les catégories classées par leurs noms :
<code class="php">$sql = "SELECT category_id, parent_id, name FROM categories ORDER BY name"; $result = $pdo->query($sql);</code>
Créer un tableau de référence :
Créer un tableau associatif $refs qui stockera les références à chaque catégorie. Chaque référence contiendra les propriétés parent_id et name. Pour les catégories sans parent (parent_id = 0), ajoutez-les au tableau $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>
Générer une liste HTML imbriquée :
Créez une fonction récursive toUL pour générer une liste HTML imbriquée à l'aide du tableau $list. Il doit rechercher des enfants et s'appeler de manière récursive pour créer des sous-arbres.
<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>
Afficher la hiérarchie :
Utilisez la fonction toUL pour générer et affichez la liste HTML hiérarchique.
Vous pouvez trouver un exemple utile sur l'obtention d'une liste HTML imbriquée à partir du jeu d'enregistrements de tableau d'un objet dans la section « Question connexe » fournie dans le document de référence.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!