PHP实现文章分类
PHP实现文章分类的方法
数据库设计
创建数据库表存储文章和分类信息,例如:
CREATE TABLE categories (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
parent_id INT DEFAULT NULL
);
CREATE TABLE articles (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT,
category_id INT,
FOREIGN KEY (category_id) REFERENCES categories(id)
);
分类管理功能
实现分类的增删改查功能:
// 添加分类
function addCategory($name, $parent_id = null) {
$sql = "INSERT INTO categories (name, parent_id) VALUES (?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$name, $parent_id]);
}
// 获取所有分类
function getAllCategories() {
$sql = "SELECT * FROM categories";
return $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
}
文章分类关联
在文章创建/编辑时选择分类:
// 创建文章时关联分类
function createArticle($title, $content, $category_id) {
$sql = "INSERT INTO articles (title, content, category_id) VALUES (?, ?, ?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$title, $content, $category_id]);
}
分类文章展示
根据分类显示文章列表:
function getArticlesByCategory($category_id) {
$sql = "SELECT * FROM articles WHERE category_id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$category_id]);
return $stmt->fetchAll(PDO::FETCH_ASSOC);
}
多级分类实现
使用递归函数处理多级分类:
function buildCategoryTree($parent_id = null) {
$sql = "SELECT * FROM categories WHERE parent_id " . ($parent_id ? "= $parent_id" : "IS NULL");
$categories = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
foreach ($categories as &$category) {
$category['children'] = buildCategoryTree($category['id']);
}
return $categories;
}
分类URL优化
使用Slug实现友好的分类URL:
// 添加slug字段到分类表
ALTER TABLE categories ADD slug VARCHAR(255) UNIQUE;
// 通过slug获取分类
function getCategoryBySlug($slug) {
$sql = "SELECT * FROM categories WHERE slug = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$slug]);
return $stmt->fetch(PDO::FETCH_ASSOC);
}
缓存分类数据
使用缓存提高分类查询性能:
function getCachedCategories() {
$cache_key = 'all_categories';
if (!$categories = cache_get($cache_key)) {
$categories = getAllCategories();
cache_set($cache_key, $categories, 3600);
}
return $categories;
}
这些方法提供了完整的文章分类实现方案,可根据实际需求进行调整和扩展。







