PHP   发布时间:2022-04-05  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使用MySQL PHP正确地执行多级菜单?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试制作一个菜单,该菜单是进入2级深度的主菜单(子菜单和子子菜单).

我之前使用GROUP_CONCAT做到了,但是深度只有1级.这是2个级别的事实,确实让我陷入了最佳实践循环.

create table `database`.`main_menu` ( `main_menu_id` INT(11) NOT NULL AUTO_INCREMENT , `main_menu_name` VARCHAR(255) NOT NULL , PRIMARY KEY (`main_menu_id`)) ENGINE = InnoDB;

create table `database`.`sub_menu` ( `main_menu_id` INT(11) NOT NULL , `sub_menu_id` INT(11) NOT NULL AUTO_INCREMENT , `sub_menu_name` VARCHAR(255) NOT NULL , PRIMARY KEY (`sub_menu_id`)) ENGINE = InnoDB;

create table `database`.`sub_sub_menu` ( `main_menu_id` INT(11) NOT NULL , `sub_menu_id` INT(11) NOT NULL , `sub_sub_menu_id` INT(11) NOT NULL AUTO_INCREMENT , `sub_sub_menu_name` VARCHAR(255) NOT NULL , PRIMARY KEY (`sub_sub_menu_id`)) ENGINE = InnoDB;


INSERT INTO `main_menu` (`main_menu_id`, `main_menu_name`) VALUES (NULL, 'Food'), (NULL, 'Treats')

INSERT INTO `sub_menu` (`main_menu_id`, `sub_menu_id`, `sub_menu_name`) VALUES ('1', NULL, 'Duck'), ('1', NULL, 'Chicken')
INSERT INTO `sub_menu` (`main_menu_id`, `sub_menu_id`, `sub_menu_name`) VALUES ('2', NULL, 'BACon Bits'), ('2', NULL, 'Dental')

INSERT INTO `sub_sub_menu` (`main_menu_id`, `sub_menu_id`, `sub_sub_menu_id`, `sub_sub_menu_name`) VALUES ('1', '1', NULL, 'In Gravy'), ('1', '2', NULL, 'in Soup')

INSERT INTO `sub_sub_menu` (`main_menu_id`, `sub_menu_id`, `sub_sub_menu_id`, `sub_sub_menu_name`) VALUES ('2', '3', NULL, 'Sticks'), ('2', '4', NULL, 'Chunks')
@H_678_0@my@L_801_6@:

ssm.sub_sub_menu_name  as   sub_sub_menu_name ,
sm.sub_menu_name  as    sub_menu_name ,
mm.main_menu_name  as   main_menu_name ,

ssm.sub_sub_menu_id  as     sub_sub_menu_id ,
sm.sub_menu_id  as      sub_menu_id ,
mm.main_menu_id  as     main_menu_id 

FROM        main_sub_sub_menu  as ssm
LEFT JOIN main_menu as mm
    ON mm.main_menu_id  = ssm.main_menu_id 
LEFT JOIN sub_menu as sm
    ON sm.sub_menu_id   = ssm.sub_menu_id  

ORDER BY ssm.sub_sub_menu_id, sm.sub_menu_id, ssm.main_menu_id

PHP在这里介绍了如何将信息分为几类:

<?PHP $cat = $getData->get_menu_categories(); //sql Query above with PDO
$i = 1;
$j = 1;
for($a=0; $a<= count($cat); $a++){
        if($i == $cat[$a]['main_menu_id']){
            for($j=1; $j < count($cat[$a]['sub_menu_id']); $j++){ // Was getTing stuck here because I can't count it unless it is an array
                 //Would show each submenu name, then I would make another for loop for the sub sub menu 
            }
        }else{
            $i++;
        }

输出将是

菜单

菜单

子子菜单

我正在制作Lists(一个< ul>< li>样式html菜单列表),基本上是一棵树.

解决方法:

您将要遍历查询结果并打印类似的内容.我使用破折号来缩进,但是您可以使用html来更简洁地进行缩进.我为想要帮助的其他人做了数据库提琴. https://www.db-fiddle.com/f/sbTyQbNemcEM5vX3xwuUaJ/0#&togetherjs=wkJd3lwafs

<?PHP 
$cat = $getData->get_menu_categories(); 
$lastmain = '';
$lastsub = '';
$lastsubsub = '';

foreach ($cat as $linE) {
   $main = $line['main_menu_name'];
   $sub = $line['sub_menu_name'];
   $subsub = $line['sub_sub_menu_name'];

   if ($lastmain <> $main) {
       print "$main\n";
       $lastmain = $main;
   }

   if ($lastsub <> $sub) {
       print "---$sub\n";
       $lastsub = $sub;
   }

   if ($lastsubsub <> $subsub) {
       print "------$subsub\n";
       $lastsubsub = $subsub;
   }
}

大佬总结

以上是大佬教程为你收集整理的如何使用MySQL PHP正确地执行多级菜单?全部内容,希望文章能够帮你解决如何使用MySQL PHP正确地执行多级菜单?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: