Как отобразить боковое навигационное меню со многими подкатегориями, используя PHP и MySQL? - PullRequest
0 голосов
/ 24 октября 2009

Хорошо, мне было интересно, как вы можете использовать PHP и MySQL для создания и отображения бокового навигационного меню со множеством категорий и подкатегорий?

Я просто не знаю, с чего начать кодирование кода PHP?

<ul>
   <li><a href="" title="">First Nested Link</a></li>
   <li><a href="" title="">First Nested Link</a></li>
   <li><a href="" title="">First Nested Link</a>
      <ul>
        <li><a href="" title="">Second Nested Link</a></li>
        <li><a href="" title="">Second Nested Link</a></li>
        <li><a href="" title="">Second Nested Link</a>
          <ul>
            <li><a href="" title="">Third Nested Link</a></li>
            <li><a href="" title="">Third Nested Link</a></li>
            <li><a href="" title="">Third Nested Link</a>
              <ul>
                <li><a href="" title="">Fourth Nested Link</a></li>
                <li><a href="" title="">Fourth Nested Link</a></li>
                <li><a href="" title="">Fourth Nested Link</a></li>
              </ul>
            </li>
            <li><a href="" title="">Third Nested Link</a></li>
            <li><a href="" title="">Third Nested Link</a></li>
          </ul>
        </li>
        <li><a href="" title="">Second Nested Link</a></li>
        <li><a href="" title="">Second Nested Link</a></li>
      </ul>
   </li>
   <li><a href="" title="">First Nested Link</a></li>
   <li><a href="" title="">First Nested Link</a></li>
</ul>

Вот мои таблицы MySQL.

* categories
      id | category_name | description
* sub_categories
      id | parent_id | category_name | description

1 Ответ

1 голос
/ 24 октября 2009

Вам нужна только одна таблица для ваших категорий; просто установите для поля parent_id значение null для категорий верхнего уровня.

Что касается фактической генерации HTML, вы можете сделать что-то в этом направлении (псевдокод), где $category_data - это результаты запроса в двумерном массиве, а $category_id - идентификатор создаваемой родительской категории , Чтобы начать, используйте $category_id = 0

function print_category($category_data, $category_id)
{
    print "<ul>";
    foreach ($category_data as $category)
    {
        if ((integer)$category['parent_id'] == $category_id)
        {
            print "<li>" . $category['category_name'] . "</li>";
            print_category($category_data, $category['id']);
        }
    }
    print "</ul>";
}

Вам придется изменить это для вашего собственного макета и структуры таблицы. Вы можете улучшить производительность (если у вас огромное количество категорий), преобразовав массив в трехмерный массив $category_data[parent_id][id][category_row].

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