Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无限子类别php和mysql li列出开放购物车类别_Php_Mysql_Opencart - Fatal编程技术网

无限子类别php和mysql li列出开放购物车类别

无限子类别php和mysql li列出开放购物车类别,php,mysql,opencart,Php,Mysql,Opencart,我在php mysql中有以下表格category和category\u description。我的问题是如何利用下面的信息在ulli结构中创建无限数量的子类别。我已经看了这里的各种例子,但是没有用,非常感谢你花时间阅读这个问题。我期待你的答复 Column Type Null Default category_id int(11) No image varchar(255) Yes NULL

我在php mysql中有以下表格
category
category\u description
。我的问题是如何利用下面的信息在
ul
li
结构中创建无限数量的子类别。我已经看了这里的各种例子,但是没有用,非常感谢你花时间阅读这个问题。我期待你的答复

Column         Type         Null    Default
category_id    int(11)      No       
image          varchar(255) Yes     NULL     
parent_id      int(11)      No      0    
top            tinyint(1)   No       
column         int(3)       No       
sort_order     int(3)       No      0    
status         tinyint(1)   No       
date_added     datetime     No      0000-00-00 00:00:00      
date_modified  datetime     No      0000-00-00 00:00:00      
并且描述存储在此表中

Column            Type          Null
category_id       int(11)       No       
language_id       int(11)       No       
name              varchar(255)  No       
description       text          No       
meta_description  varchar(255)  No       
meta_keyword      varchar(255)  No       

您已经有了一个列
parent\u id
。使用它来表示类别之间的关系。如果类别位于根级别,则将该列设置为
NULL

另一种方法是第三个表,将类别映射到子类别。这将允许您自上而下和自下而上行走。取决于应用程序使用的方法

为了处理这个层次结构,您需要编写一些递归函数,并在PHP中找到能够正确处理类别层次结构的适当表示

打印某种面包屑的简单递归函数如下所示(在本例中,我假设您有某种ORM):

如果不使用ORM,最简单的方法是从数据库中获取所有类别,并将它们存储在以ID为键的数组中。然后,您可以替换上面代码中的数组调用,它也可以工作。

opencart具有

$this->model\u catalog\u category->getCategory()

方法,并将类别id作为参数传递,例如

$category=this->model\u catalog\u category->getCategory(5)


这也会处理适当的描述联接,因此您不需要直接访问它们。正如@Till-Helge-Helwig已经指出的,如果您想用所有子类别构建一棵树,那么需要使用递归函数。在实际的类别模块代码中可以看到一个很好的例子。滚动到文件
catalog/controller/module/category.php
的底部,您将看到一个为其构建html的递归函数

您是否有一个递归函数的示例请多多感谢我在我的答案中添加了一个粗略的示例。当然,这一切都取决于你的数据模型是什么样子的。它只是opencart。它使用一个数据模型,但我不确定它是否在itI上。我不知道opencart,但它肯定有一个访问类别的方法,或者一个允许你获取类别的适当数据模型。也许这有帮助:如何将其放入header.tpl中?将递归函数添加到
目录/controller/common/header.php
文件中,然后以与模块相同的方式使用它
function findWayToTop($category, $breadcrumbs = array()) {
    $breadcrumbs[] = $this;
    $parent = $category->getParent();
    if ($parent != null) {
        return findWayToTop($parent, $breadcrumbs);
    } else {
        return $breadcrumbs;
    }
}