使用PHP和MySQL实现树形结构

PHP中的菜单子菜单下拉

使用'categorytrere()'功能在php中构建菜单子菜单下拉列表。

<select name="category">
    <?php categoryTree(); ?>
</select>

数据库配置(dbconfig.php)

'dbconfig.php'文件用于连接和选择数据库。
指定数据库主机('$dbhost'),用户名('$dbusern'),密码('$dbpassword'),以及根据MySQL凭据的名称('$dbname')。

<?php
//Database configuration
$dbHost     = "localhost";
$dbUsername = "root";
$dbPassword = "root";
$dbName     = "onitroad";
//Create database connection
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
//Check connection
if ($db->connect_error) {
    die("Connection failed: " . $db->connect_error);
}
?>

PHP递归函数生成父树/儿童树

'categorytree()'函数使用php生成n级别类别子类别树。
它将为类别树创建下拉选项。

  • '$parent_id' - 可选。指定父ID以获取此父类别的子类别。
  • '$sub_mark' - 可选。标记将在子类别名称的开头添加。
<?php
//Include the database configuration file
require 'dbConfig.php';
function categoryTree($parent_id = 0, $sub_mark = ''){
    global $db;
    $query = $db->query("SELECT * FROM categories WHERE parent_id = $parent_id ORDER BY name ASC");

    if($query->num_rows > 0){
        while($row = $query->fetch_assoc()){
            echo '<option value="'.$row['id'].'">'.$sub_mark.$row['name'].'</option>';
            categoryTree($row['id'], $sub_mark.'---');
        }
    }
}

创建数据库表

要存储类别和子类别,需要在数据库中创建一个表。
以下SQL在MySQL数据库中创建一个“类别”表。

CREATE TABLE `categories` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `parent_id` int(11) NOT NULL DEFAULT '0',
 `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
 `created` datetime NOT NULL,
 `modified` datetime NOT NULL,
 `status` enum('1','0') COLLATE utf8_unicode_ci NOT NULL DEFAULT '1' COMMENT '1:Active, 0:Inactive',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

“parent_id”列指定类别是父级或者子。
如果parent_id为0,则它将是父类别。
否则,它将是一个子类别,ID是此类别的父级。

日期:2020-06-02 22:15:28 来源:oir作者:oir