Многоуровневый неупорядоченный список из таблицы результатов запроса - PullRequest
0 голосов
/ 27 апреля 2011

Я сделал запрос, в котором я могу заполнить таблицу следующими тэдами, используя все строки этого запроса.

section_id | section | category_id | category | subcategory_id | subcategory

Теперь я пытаюсь создать многоуровневый неупорядоченный список из этой заполненной таблицы. Возможно ли это сделать? Результат должен понравиться так:

<ul>
  <li>Section Name
    <ul>
      <li>Category name for above section
        <ul>
          <li>Subcategory name for above category and section</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 27 апреля 2011

Что-то вроде этого, возможно (не проверено):

$tree = array();
while ($row = mysql_fetch_assoc($result)) {
    $tree[$row['section_id']]['name'] = $row['section'];
    $tree[$row['section_id']]['categories'][$row['category_id']]['name'] = $row['category'];
    $tree[$row['section_id']]['categories'][$row['category_id']]['subcategories'][$row['subcategory_id']]['name'] = $row['subcategory'];
}

echo '<ul>';
foreach ($tree as $sec_id => $section) {
    printf('<li><a href="test.php?sec=%d">%s</a><ul>', $sec_id, $section['name']);
    foreach ($section['categories'] as $cat_id => $category) {
        printf('<li><a href="test.php?sec=%d&cat=%d">%s</a><ul>', $sec_id, $cat_id, $category['name']);
        foreach ($category['subcategories'] as $scat_id => $subcategory) {
            printf('<li><a href="test.php?sec=%d&cat=%d&scat=%d">%s</a></li>', $sec_id, $cat_id, $scat_id, $subcategory['name']);
        }
        echo '</ul></li>';
    }
    echo '</ul></li>';
}
echo '</ul>';
...