php实现分类显示
PHP实现分类显示的方法
数据库表结构设计 创建分类表时建议包含id、name、parent_id等字段,parent_id用于标识父级分类实现层级关系。示例SQL:
CREATE TABLE categories (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
parent_id INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
递归查询分类数据 通过递归函数实现无限级分类查询,注意设置递归终止条件:

function getCategories($parentId = 0) {
$categories = [];
$result = mysqli_query($conn, "SELECT * FROM categories WHERE parent_id = $parentId");
while ($row = mysqli_fetch_assoc($result)) {
$row['children'] = getCategories($row['id']);
$categories[] = $row;
}
return $categories;
}
前端模板展示 使用ul/li结构配合CSS实现树形展示,Bootstrap等框架可简化样式:

<ul class="category-tree">
<?php foreach ($categories as $category): ?>
<li>
<?= htmlspecialchars($category['name']) ?>
<?php if (!empty($category['children'])): ?>
<?php include 'category_tree.php'; ?>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
性能优化建议 对于大型分类体系,可采用以下优化方案:
- 使用闭包表(Closure Table)存储层级关系
- 实现缓存机制减少数据库查询
- 预加载所有分类后用PHP数组处理层级关系
完整示例代码 包含数据库连接、查询和展示的完整流程:
// 数据库连接
$conn = mysqli_connect("localhost", "user", "password", "database");
// 获取分类数据
$categories = getCategories();
// 递归展示函数
function displayCategories($categories) {
echo '<ul>';
foreach ($categories as $category) {
echo '<li>' . $category['name'];
if (!empty($category['children'])) {
displayCategories($category['children']);
}
echo '</li>';
}
echo '</ul>';
}
// 调用展示
displayCategories($categories);






