大佬教程收集整理的这篇文章主要介绍了如何使用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 $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,请注明来意。