Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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表获取信息的动态菜单树_Php_Mysql_Recursion_Menu - Fatal编程技术网

Php 使用递归和从其他四个mysql表获取信息的动态菜单树

Php 使用递归和从其他四个mysql表获取信息的动态菜单树,php,mysql,recursion,menu,Php,Mysql,Recursion,Menu,我正在尝试制作一个菜单,它将从四个表中获取信息,例如页面、类别、子类别和文章 例如,我想制作一个如下所示的菜单: Home Category 1 Subcategory 1.2 Subcategory 1.3 Subcategory 1.1 Category 2 Subcategory 2.3 Subcategory 2.2 Subcategory 2.1 Subcategory 4.1 Article 4.1.2 Article 4.1.3

我正在尝试制作一个菜单,它将从四个表中获取信息,例如页面、类别、子类别和文章

例如,我想制作一个如下所示的菜单:

Home
Category 1
   Subcategory 1.2
   Subcategory 1.3
   Subcategory 1.1
Category 2
   Subcategory 2.3
   Subcategory 2.2
   Subcategory 2.1
Subcategory 4.1
   Article 4.1.2
   Article 4.1.3
   Article 4.1.1
Page 2 (Services)
   Page 3 (Service 1)
   Page 4 (Service 2)
   Page 4 (Service 3)
Page 1 (About us)
Page 1
Sub Category 1
   Sub Category 2
Category 2
   Sub Category 3
Sub Category 2

数据库表菜单:

+--+-----+-----------+------+----+----+ |id | id |菜单|类型|父项| id |订单|激活| +--+-----+-----------+------+----+----+ |1 | 1 |页| 0 | 1 | 1| |2 | 1 |子| U类别| 0 | 2 | 1| |3 | 2 |子| U类别| 0 | 4 | 1| |4 | 2 |类别| 0 | 3 | 1| |5 | 3 |子| U类别| 4 | 1 | 1| |6 | 2 |子| U类别| 2 | 1 | 1| +--+-----+-----------+------+----+----+ id_menu代表类型的id | parent_id==0代表菜单的根

输入数据库中的菜单应如下所示:

Home
Category 1
   Subcategory 1.2
   Subcategory 1.3
   Subcategory 1.1
Category 2
   Subcategory 2.3
   Subcategory 2.2
   Subcategory 2.1
Subcategory 4.1
   Article 4.1.2
   Article 4.1.3
   Article 4.1.1
Page 2 (Services)
   Page 3 (Service 1)
   Page 4 (Service 2)
   Page 4 (Service 3)
Page 1 (About us)
Page 1
Sub Category 1
   Sub Category 2
Category 2
   Sub Category 3
Sub Category 2

我选择使用type作为表的名称。 基本上,如果我想为第二个菜单项使用category 1 id==1,我将执行以下操作:

Home
Category 1
   Subcategory 1.2
   Subcategory 1.3
   Subcategory 1.1
Category 2
   Subcategory 2.3
   Subcategory 2.2
   Subcategory 2.1
Subcategory 4.1
   Article 4.1.2
   Article 4.1.3
   Article 4.1.1
Page 2 (Services)
   Page 3 (Service 1)
   Page 4 (Service 2)
   Page 4 (Service 3)
Page 1 (About us)
Page 1
Sub Category 1
   Sub Category 2
Category 2
   Sub Category 3
Sub Category 2

插入到'menu``id`menu`、'type`、'parent`id`、'order`、'active`VALUES`1`、'categories`、'0`、'2`、'1`; 我在PHP中尝试了很多选项,但我得到了一个无限循环或一些疯狂的菜单

我怎么做这个?因为我已经尝试了各种方法,但还没有找到相关的解决方案

我试着做了这样的事情,只是为了让菜单上的一个孩子。但我得到了一个无限循环

函数GetMenuTree$ParentId{ 全球$conn; $menu=; $MenuData=$conn->prepareSELECT*从父菜单_id=?; $MenuData->执行[$ParentId]; 而$row=$MenuData->fetch{ $SQL=SELECT*FROM.$row['type']。其中id=.$row['id_menu']; $DataForMenu=$conn->prepare$SQL; $DataForMenu->execute; foreach$DataForMenu作为$value{ $menu.=\n\n; $menu.=\n.GetMenuTree$row['id\u menu']。\n; $menu.=\n\n; } } 返回$menu; }
我想制作一个菜单,其中一个看起来像这样:-问题是,你想要的菜单与你的样本数据不匹配。。您应该使这些匹配,以便您期望的输出对我们这些愿意提供帮助的人更有意义。我知道,但管理相同的输入数据很容易。这只是tabel和desired的示例output@Zak我从数据库表中添加了“应如何查看”菜单。您的程序/数据已损坏。子类别4.1不作为子类别。类别和子类别之间没有区别,因此没有理由将它们放在单独的表中。可以使用单个categories表上的字段建立父/子关系。如果我这样做,那么我将再次遇到朴素树问题。我认为这是子类别和类别的最简单方法我想制作一个菜单,它看起来像这样:-问题是,你想要的菜单与你的样本数据不匹配。。您应该使这些匹配,以便您期望的输出对我们这些愿意提供帮助的人更有意义。我知道,但管理相同的输入数据很容易。这只是tabel和desired的示例output@Zak我从数据库表中添加了“应如何查看”菜单。您的程序/数据已损坏。子类别4.1不作为子类别。类别和子类别之间没有区别,因此没有理由将它们放在单独的表中。可以使用单个categories表上的字段建立父/子关系。如果我这样做,那么我将再次遇到朴素树问题。依我看,这是对子类别和类别最简单的方法