집 >데이터 베이스 >MySQL 튜토리얼 >PHP와 MySQL에서 카테고리 계층 구조를 구성하는 방법은 무엇입니까?
PHP 및 MySQL의 범주 계층
일반적인 데이터베이스 구조에서 범주는 계층적 방식으로 구성되며 상위 범주에는 하위 범주가 포함됩니다. . MySQL 데이터베이스에서 이 계층 구조를 검색하는 것은 어려운 작업이 될 수 있습니다. 이 기사에서는 PHP와 MySQL을 사용하여 카테고리 계층 구조를 효과적으로 구성하는 방법을 살펴봅니다.
인접 목록 모델
인접 목록 모델은 상위-하위 관계를 저장하여 계층적 데이터를 나타냅니다. 테이블 하나. 테이블의 각 행에는 카테고리의 ID와 상위 카테고리의 ID가 포함되어 있습니다. 이 모델을 사용하면 단일 SQL 쿼리를 사용하여 카테고리 트리를 효율적으로 검색할 수 있습니다.
계층 구조 생성
카테고리 계층 구조를 생성하기 위해 다음 PHP 코드를 사용합니다.
<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>
이 코드는 결과 집합을 반복하여 배열의 각 범주에 대한 참조를 생성합니다. 상위-하위 관계를 사용하여 계층 구조를 나타내는 다차원 배열을 구축합니다.
출력 목록 생성
계층 구조를 표시하기 위해 재귀 함수를 사용합니다.
<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>
이 함수는 다차원 배열을 사용하여 카테고리 계층 구조를 나타내는 HTML 비순차 목록을 생성합니다. 계층 구조를 재귀적으로 순회하면서 필요에 따라 중첩 목록을 생성합니다.
위 내용은 PHP와 MySQL에서 카테고리 계층 구조를 구성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!