У меня проблемы с перечислением категории и подкатегории - PullRequest
0 голосов
/ 28 марта 2020

Пока я перечисляю категории, я пытаюсь добавить подкатегории рядом с основной категорией.

Например, я пытаюсь сделать его похожим на список категорий в панели управления 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

http://prntscr.com/rob2fz

Это моя сторона кода

<?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
    }
}
?>

1 Ответ

0 голосов
/ 28 марта 2020

Во-первых, вы можете захотеть изменить столбец 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

Таким образом, вы получите информацию о категории и родителе в одном запросе. Однако будьте осторожны, этот код больше не работает, если у ваших родителей тоже есть родители.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...