我列出类别时,我尝试将子类别添加到主要类别旁边。
例如,我尝试使其类似于Opencart中的类别列表 管理面板。
我在数据库中的表如下
table:
id - parent_id - title - description
1 - 0 - Desktops - bla bla...
2 - 0 - Laptops - bla bla...
3 - 1 - Mac - bla bla...
4 - 1 - PC - bla bla...
5 - 2 - Notebooks - bla bla...
6 - 5 - Macs - bla bla...
7 - 6 - Windows - bla bla...
我想要这样的类别输出
Desktops
Desktops > Mac
Desktops > PC
Laptops & Notebooks
Laptops & Notebooks > Macs
Laptops & Notebooks > Windows
这是我的代码方面
<?php
$cat1 = $db->query('SELECT * FROM `category` ORDER BY id DESC');
foreach ($cat1 as $v) {
$cat2 = $db->query('SELECT * FROM `category` WHERE parent_id = '.$v['id'].' ORDER BY id DESC';
foreach ($cat2 as $vl) {
?>
<tr>
<td width="20"><?php echo $vl['id']; ?> </td>
<td><?php echo $vl['title']; ?> > <?php echo $v['title']; ?> </td>
</tr>
<td class="text-center">
<a href="#<?php echo $v1['id']; ?>" class="btn btn-primary btn-sm"> Edit</a>
</td>
<?php
}
}
?>
答案 0 :(得分:0)
首先,您可能希望更改列parent_id
并用NULL
替换零,这样就可以将该列用作外键,以确保您从未拥有parent_id
什么都没有引用。
然后您可以使用此查询:
SELECT c.title, p.title as parent_title, c.description, p.description as parent_description
FROM category c
JOIN category p ON c.id = c2.parent_id
ORDER BY p.title, c.title
这样,您可以在单个查询中获取类别和父级的信息。但是请注意,如果您的父母也有父母,则此代码将不再起作用。