分层树视图类别并排书写

问题描述 投票:0回答:1

我有分层类别。我想将它们打印在表格中。我希望它在表格的每一行中都写上子类别和主类别。

示例:

电子产品
电子产品 > 电脑
电子产品 > 电脑 > 配件
电子产品 > 电脑 > 配件 -> 鼠标
电子产品 > 电脑 > 配件 -> 键盘
化妆品
化妆品 > 护肤品
化妆品 > 护肤品 > 护肤霜
化妆品 > 护肤品 > 面膜

我尝试过这个功能。它不起作用。

public function getSubCats($Categories)
    {
        foreach($Categories as $category){
            if(count($category->subcategory)){
                $this->getSubCats($category->subcategory);
                return $category->subcategory;
            }else{
                return $category->subcategory;
            }
        }
    }

类别数据库表

id parent_id 名字
1 电子
2 1 电脑
3 2 配件
4 3 键盘
5 化妆品
6 5 皮肤护理
7 6 护肤霜
8 7 皮肤面膜

索引刀片类别表(子类别无限制)

类别名称 行动
电子 编辑
电子 - 计算机 编辑
电子 - 计算机 - 配件 编辑
电子 - 计算机 - 配件 - 键盘 编辑
化妆品 编辑
化妆品 - 护肤品 编辑
化妆品 - 皮肤护理 - 护肤霜 编辑
化妆品 - 护肤品 - 面膜 编辑

你能帮我吗? 谢谢你。

php laravel treeview categories
1个回答
0
投票

由于从 MySQL 获取结果的差异,我使用 0(零)而不是 NULL 来确定顶级类别。

where column = 1/2/3/4

where column is NULL

当使用 0(零)时,我可以使用相同的准备好的语句。

这就是我想到的:

function get_cat_by_parent( $pdo, $id ) {
    $sql    = "SELECT * FROM stackoverflow.categories WHERE parent_id = ?";
    $stmt   = $pdo->prepare( $sql );
    try {
        $stmt->execute([$id]);
        $data   = $stmt->fetchALL( PDO::FETCH_ASSOC );
    } catch (PDOException $e ) {
        // exception
    }
    return $data;
}

function recursive( $pdo, $array, $depth, $label ) {
    $depth++;
    $data   = get_cat_by_parent( $pdo, $array['id'] );
    if(count($data)) {
        foreach( $data as $row) {
            echo $label;
            echo " → ";
            echo $row['name'];
            echo "<br />";
            recursive( $pdo, $row, $depth, $label . " &#x2192; " . $row['name'] );
        }
    }
}

$parents    = get_cat_by_parent( $pdo, 0 );
foreach( $parents as $row ) {
    echo $row['name'];
    echo "<br />";
    recursive( $pdo, $row, 0, $row['name'] );
}

输出:

Electronics
Electronics → Computers
Electronics → Accessories
Electronics → Accessories → USB Hub
Electronics → Accessories → Memory Card Readers
Electronics → Accessories → Mic Stand
Electronics → Keyboards
Cosmetics
Cosmetics → Skin Care
Cosmetics → Skin Cream
Cosmetics → Skin Cream → Oil of Olaz
Cosmetics → Skin Cream → Something
Cosmetics → Skin Cream → Other
Cosmetics → Skin Mask

我在您的测试数据中添加了更多类别。

© www.soinside.com 2019 - 2024. All rights reserved.