我想制作一个动态菜单:
展示他们各自
<li>
而不展示他们的孩子。
当hover
在任一<li>
父级上显示<ul> + <li> hijos
获取数据
$var
或strings
从base de datos
在数据库中,我有:
一个“品牌”表和一个“产品”表,
我用它来按品牌或按过滤搜索%LIKE
。
<li>Placas de video</li>
click/hover
> MSI / GEFORCE 等。click
>> 导致搜索LIKE %msi%
(没有,hover
因为不需要显示任何内容)表marcas
:
CREATE TABLE `marcas` (
`id_marca` int(50) NOT NULL,
`marca` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `marcas`
ADD PRIMARY KEY (`id_marca`),
ADD UNIQUE KEY `id_marca` (`id_marca`);
表productos
:
CREATE TABLE `productos` (
`id_producto` int(50) NOT NULL,
`codigo_p` varchar(50) NOT NULL,
`id_marca` int(50) NOT NULL,
`nombre` varchar(100) DEFAULT NULL,
`presentacion` varchar(100) DEFAULT NULL,
`precio` decimal(7,2) DEFAULT NULL,
`iva` decimal(7,2) NOT NULL DEFAULT 0.21,
`ivatotal` decimal(7,2) DEFAULT NULL,
`preciototal` decimal(7,2) DEFAULT NULL,
`tags` varchar(200) DEFAULT NULL,
`foto` varchar(50) DEFAULT NULL,
`descripcion` text NOT NULL,
`stock` varchar(2) NOT NULL DEFAULT 'Si'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
// Indices de la tabla `productos`
ALTER TABLE `productos`
ADD PRIMARY KEY (`id_producto`),
ADD UNIQUE KEY `id_producto` (`id_producto`),
ADD KEY `codigo_p` (`codigo_p`),
ADD KEY `ps_marcas` (`id_marca`),
ADD KEY `ps_tags` (`tags`);
---
ALTER TABLE `productos`
MODIFY `id_producto` int(50) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=0;
// Exportado con PHPMYADMIN (xampp/localhost)
使用 PHP 使用数据库中的数据详细说明多级菜单的最佳方法是什么?
澄清:
这些“父母”和“孩子”与“产品”有联系。单击或输入类别或子类别时显示的内容
我正在使用引导程序,因此HTML
项目将是:
<li class="nav-item">
您可以创建一个名为“菜单”的表,其结构如下:
然后我们插入一些示例值:
我对表的字段一一解释:
menu_id:它是一个自动增量,将区分菜单表的每个元素
menu_name:这是用户将在菜单中看到的名称。示例:Pendrive->Kingston->8GB(pendrive 和 kingston 以及 8GB 都是多级菜单将显示的名称)
id_padre:菜单动态化的关键。该字段将指示所讨论的记录是否是菜单表中存在的某些其他记录的“子”。
A)默认情况下,要显示构成菜单根目录(级别 1)的元素,id_padre 必须设置为“0”
B)如果我们有例如记录
(4, 'Kingston', 1, 'pendrives/kingston', '1'),
,我们看到 parent_id 是“1”,这意味着“Kingston”是“Pendrive”的儿子,其 parent_id 正好是“1”。对于桌子的其余部分也是如此。链接:当用户单击菜单中的特定名称时,您将显示表单或“视图”的地址。
状态:它将具有值“0”或“1”。如果它是非活动的,它将是“0”(用户看不到它用于任何特定目的)如果它是活动的(它可以被用户看到)它是“1”
关于动态创建菜单相关的php,我们有以下几点:
上面的功能是根据parent_id用递归的方法动态生成菜单。您将此函数添加到您拥有其他函数的位置,然后只需在要生成菜单的视图中调用它,如下所示:
注意:我们总是将参数“0”传递给函数,以便它从第一级或基础生成菜单,这些元素是没有父元素的元素,也可以称为根元素。
我很好奇它是否存在,因为我从未见过这种行为。我想过这样做,但W3school已经完成了,所以我为你发布了它:
这样做是将相对位置应用于下拉菜单的子项的子项,并将它们向左移动 100%,这样它们就不会重叠。jquery 会切换是否显示/隐藏 ul 孙子。请记住,您必须添加明确的 css 类才能使其为您工作。