php二级分类怎么写
时间 : 2023-03-26 06:21:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在 PHP 中实现二级分类主要涉及到两个方面:数据存储和数据展示。其中数据存储可以使用 MySQL 数据库,而数据展示可以使用 PHP 进行编写。

以下是一个简单的 PHP 二级分类的实现示例:

1. 数据库设计和数据存储

在 MySQL 中创建两张表:分类(category)和子分类(subcategory)。分类表包含主分类的信息,包括分类 ID、名称和描述等;子分类表包含子分类的信息,包括子分类 ID、名称、描述和所属主分类的 ID 等。

分类表结构:

CREATE TABLE category (

id INT(11) PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(50) NOT NULL,

description TEXT

);

子分类表结构:

CREATE TABLE subcategory (

id INT(11) PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(50) NOT NULL,

description TEXT,

category_id INT(11) NOT NULL,

FOREIGN KEY (category_id) REFERENCES category(id)

);

插入几个示例记录:

INSERT INTO category (name, description) VALUES

('电脑', '台式机、笔记本、平板电脑等'),

('手机', '智能手机、功能手机等'),

('数码', '相机、摄像机、智能手表等');

INSERT INTO subcategory (name, description, category_id) VALUES

('台式机', '台式电脑', 1),

('笔记本', '笔记本电脑', 1),

('平板电脑', '平板电脑设备', 1),

('智能手机', '智能手机', 2),

('功能手机', '功能手机', 2),

('相机', '相机设备', 3),

('摄像机', '摄像机设备', 3),

('智能手表', '智能手表设备', 3);

2. 数据展示

使用 PHP 从数据库中获取分类数据,并将其展示在网页上。

<?php

// 数据库连接信息

$dbhost = 'localhost';

$dbuser = 'root';

$dbpass = 'password';

$dbname = 'database_name';

// 连接数据库

$conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

if (!$conn) {

die("连接数据库失败: " . mysqli_connect_error());

}

// 查询主分类数据

$sql = "SELECT id, name, description FROM category";

$result = mysqli_query($conn, $sql);

// 遍历主分类数据

while ($row = mysqli_fetch_assoc($result)) {

echo "<h2>" . $row['name'] . "</h2>";

echo "<p>" . $row['description'] . "

";

// 查询该主分类下的子分类数据

$sql2 = "SELECT id, name, description FROM subcategory WHERE category_id=" . $row['id'];

$result2 = mysqli_query($conn, $sql2);

// 遍历子分类数据

while ($row2 = mysqli_fetch_assoc($result2)) {

echo "<ul>";

echo "<li>" . $row2['name'] . "</li>";

echo "<li>" . $row2['description'] . "</li>";

echo "</ul>";

}

}

// 关闭数据库连接

mysqli_close($conn);

?>

上述代码会从数据库中获取主分类数据,并遍历每个主分类下的子分类数据,将其展示在网页上。

以上就是一个简单的 PHP 二级分类的实现示例。实际应用中,还需要考虑分类数据的添加、编辑和删除,以及分类的多级嵌套等情况。

PHP二级分类可以使用“关系型数据库”来实现。在关系型数据库中,在一个表中可以存储多个数据,通过在表中添加一个分类字段来实现不同分类的数据的存储,因此可以通过在表中添加一个“parent_id”字段来实现二级分类。

下面是一个简单的二级分类实现示例:

CREATE TABLE categories (

id INT(11) unsigned NOT NULL AUTO_INCREMENT,

name VARCHAR(255) NOT NULL,

parent_id INT(11) unsigned NOT NULL DEFAULT '0',

PRIMARY KEY (id),

KEY parent_id (parent_id),

FOREIGN KEY (parent_id) REFERENCES categories (id) ON DELETE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在上面的示例中,我们创建了一个名为“categories”的表,包含“id”、“name”和“parent_id”三个字段。其中“parent_id”字段用于存储父级分类的ID,如果该值为“0”则表示它是根分类,否则它是子分类。通过设置“FOREIGN KEY”和“ON DELETE CASCADE”来实现级联删除,当父级分类被删除时也会一并删除其下的子级分类。

以下是一些用于操作分类的示例代码:

// 获取根分类

function getRootCategories() {

$result = array();

$query = "SELECT * FROM categories WHERE parent_id = 0";

$result_set = mysql_query($query);

while ($row = mysql_fetch_assoc($result_set)) {

$result[] = $row;

}

return $result;

}

// 获取子分类

function getChildCategories($parent_id) {

$result = array();

$query = "SELECT * FROM categories WHERE parent_id = {$parent_id}";

$result_set = mysql_query($query);

while ($row = mysql_fetch_assoc($result_set)) {

$result[] = $row;

}

return $result;

}

// 插入新分类

function addCategory($name, $parent_id) {

$name = mysql_real_escape_string($name);

$query = "INSERT INTO categories (name, parent_id) VALUES ('{$name}', {$parent_id})";

mysql_query($query);

}

// 删除分类

function deleteCategory($id) {

$query = "DELETE FROM categories WHERE id = {$id} OR parent_id = {$id}";

mysql_query($query);

}

在上面的代码中,我们定义了一些用于操作分类的函数,包括获取根分类、获取子分类、插入新分类和删除分类。这些函数可以根据实际需求进行修改和扩展。

总之,通过在表中添加一个“parent_id”字段来实现二级分类是一种简单而有效的实现方式,可以方便地对数据进行分类和管理,提高系统的可维护性和扩展性。