当前位置:首页 > PHP

php实现分类功能实现

2026-01-30 04:52:11PHP

PHP 实现分类功能

数据库设计

创建分类表 categories,包含基本字段:

CREATE TABLE categories (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    parent_id INT DEFAULT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (parent_id) REFERENCES categories(id) ON DELETE CASCADE
);

parent_id 用于实现多级分类,指向父分类的 ID。

添加分类

通过表单提交分类数据并插入数据库:

// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name = $_POST['name'];
    $parent_id = $_POST['parent_id'] ?? null;

    $stmt = $pdo->prepare("INSERT INTO categories (name, parent_id) VALUES (?, ?)");
    $stmt->execute([$name, $parent_id]);
}

显示分类树

递归查询并显示多级分类:

function displayCategories($parent_id = null, $level = 0) {
    global $pdo;
    $stmt = $pdo->prepare("SELECT * FROM categories WHERE parent_id " . ($parent_id ? "= ?" : "IS NULL"));
    $stmt->execute($parent_id ? [$parent_id] : []);

    while ($category = $stmt->fetch()) {
        echo str_repeat("&nbsp;", $level * 4) . $category['name'] . "<br>";
        displayCategories($category['id'], $level + 1);
    }
}

分类下拉菜单

生成用于表单选择的分类下拉菜单:

function generateCategoryOptions($parent_id = null, $level = 0) {
    global $pdo;
    $stmt = $pdo->prepare("SELECT * FROM categories WHERE parent_id " . ($parent_id ? "= ?" : "IS NULL"));
    $stmt->execute($parent_id ? [$parent_id] : []);

    while ($category = $stmt->fetch()) {
        echo '<option value="' . $category['id'] . '">' . str_repeat("&nbsp;", $level * 4) . $category['name'] . '</option>';
        generateCategoryOptions($category['id'], $level + 1);
    }
}

分类关联

将内容与分类关联:

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)
);

查询分类内容

获取特定分类下的内容:

$category_id = $_GET['category_id'] ?? null;
$stmt = $pdo->prepare("SELECT * FROM articles WHERE category_id = ?");
$stmt->execute([$category_id]);
$articles = $stmt->fetchAll();

分类面包屑导航

显示当前分类的路径:

function getBreadcrumbs($category_id) {
    global $pdo;
    $breadcrumbs = [];
    while ($category_id) {
        $stmt = $pdo->prepare("SELECT * FROM categories WHERE id = ?");
        $stmt->execute([$category_id]);
        $category = $stmt->fetch();
        $breadcrumbs[] = $category;
        $category_id = $category['parent_id'];
    }
    return array_reverse($breadcrumbs);
}

php实现分类功能实现

标签: 功能php
分享给朋友:

相关文章

php实现文件下载

php实现文件下载

PHP 实现文件下载的方法 使用 header() 函数强制下载 设置正确的 HTTP 头信息,强制浏览器下载文件而不是直接打开。 $file = 'path/to/file.pdf'; if (f…

vue实现倍速播放功能

vue实现倍速播放功能

实现倍速播放功能的方法 在Vue中实现倍速播放功能通常涉及HTML5的<video>元素或第三方播放器库(如video.js)的API调用。以下是具体实现方式: 使用原生HTML5…

vue实现用户添加功能

vue实现用户添加功能

实现用户添加功能的步骤 表单设计与数据绑定 在Vue组件中设计一个表单,包含用户名、邮箱、密码等字段。使用v-model指令实现双向数据绑定,将表单输入与组件的数据属性关联起来。 <temp…

php实现分页

php实现分页

PHP实现分页的基本方法 使用LIMIT和OFFSET进行数据库查询分页。通过计算当前页码和每页显示数量,动态生成SQL语句。 $page = isset($_GET['page']) ? (int…

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…