Maison > base de données > tutoriel mysql > Comment construire une hiérarchie de catégories en PHP et MySQL ?

Comment construire une hiérarchie de catégories en PHP et MySQL ?

DDD
Libérer: 2024-10-23 21:01:30
original
532 Les gens l'ont consulté

How to Construct a Category Hierarchy in PHP and MySQL?

Hiérarchie des catégories en PHP et MySQL

Dans une structure de base de données typique, les catégories sont organisées de manière hiérarchique, les catégories parent contenant des catégories enfants . Récupérer cette hiérarchie à partir d'une base de données MySQL peut être une tâche difficile. Cet article explore comment construire efficacement une hiérarchie de catégories à l'aide de PHP et MySQL.

Modèle de liste de contiguïté

Le modèle de liste de contiguïté représente les données hiérarchiques en stockant les relations parent-enfant dans un seul tableau. Chaque ligne du tableau contient l'ID de la catégorie et l'ID de son parent. Ce modèle permet une récupération efficace de l'arborescence des catégories à l'aide d'une seule requête SQL.

Génération de la hiérarchie

Pour générer la hiérarchie des catégories, nous utilisons le code PHP suivant :

<code class="php">$refs = array();
$list = array();

$sql = "SELECT item_id, parent_id, name FROM items ORDER BY name";
$result = $pdo->query($sql);

foreach ($result as $row) {
    $ref = &$refs[$row['item_id']];

    $ref['parent_id'] = $row['parent_id'];
    $ref['name'] = $row['name'];

    if ($row['parent_id'] == 0) {
        $list[$row['item_id']] = &$ref;
    } else {
        $refs[$row['parent_id']]['children'][$row['item_id']] = &$ref;
    }
}</code>
Copier après la connexion

Ce code parcourt l'ensemble de résultats, créant des références à chaque catégorie dans un tableau. Il utilise des relations parent-enfant pour créer un tableau multidimensionnel qui représente la hiérarchie.

Création d'une liste de sortie

Pour afficher la hiérarchie, nous utilisons une fonction récursive :

<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>
Copier après la connexion

Cette fonction prend le tableau multidimensionnel et génère une liste HTML non ordonnée représentant la hiérarchie des catégories. Il parcourt la hiérarchie de manière récursive, créant des listes imbriquées selon les besoins.

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!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal