PHP + mySQL递归选择创建层次结构菜单

时间:2016-05-28 22:51:23

标签: php mysql codeigniter bootstrapping

我正在学习PHP和mySQL,需要一些帮助来创建一些代码来构建基于父子元素的层次结构菜单。深层次将是1个孩子。

这是表结构:

CREATE TABLE `businessprocess` (`bp_id` int(11), `bp_order` int(11), `bp_name` varchar(50), `bp_parent` int(11), `bp_active` tinyint(1), `dp_id` int(11)) ENGINE=InnoDB;

这个数据:

INSERT INTO `businessprocess` (`bp_id`, `bp_order`, `bp_name`, `bp_parent`, `bp_active`, `dp_id`) VALUES
(1, 1000, 'Solicitud de Servicios (fijo y movil)', NULL, 1, 1),
(2, 1100, 'Personas', 1, 1, 1),
(3, 1200, 'Empresas', 1, 1, 1),
(4, 2000, 'Baja de Servicio', NULL, 1, 1),
(5, 2100, 'Personas', 4, 1, 1),
(6, 2200, 'Empresas', 4, 1, 1),
(7, 2300, 'Defunción', 4, 1, 1),
(8, 2400, 'Tercero', 4, 1, 1),
(9, 3000, 'Modificacion de Servicio', NULL, 1, 1),
(10, 4000, 'Recambio de Equipo', NULL, 1, 1),
(11, 3100, 'Personas o Empresas', 9, 1, 1),
(12, 3200, 'Tercero', 9, 1, 1),
(13, 4100, 'Personas o Empresas', 10, 1, 1),
(14, 4200, 'Tercero', 10, 1, 1);

这是PHP中菜单所需的输出:

    Solicitud de Servicios (fijo y movil)
    --Personas
    --Empresas
    Baja de Servicio
    --Personas
    --Empresas
    --Defunción
    --Tercero
    Modificacion de Servicio
    --Personas o Empresas
    --Tercero
    Recambio de Equipo
    --Personas o Empresas
    --Tercero

任何帮助都非常感谢。谢谢! AC

1 个答案:

答案 0 :(得分:0)

首次运行

 SELECT bp_id, `bp_name` FROM `businessprocess` WHERE bp_parent IS NULL

每个返回的结果运行

的第二个
SELECT `bp_name` FROM `businessprocess` WHERE bp_parent IS NOT NULL  AND `bp_parent` = bp_id(gotten from the previous result)

它应该显示你需要的东西