Как отобразить многоуровневое дерево отношений один ко многим

0

Как закодировать все записи и отобразить все соответствующие дочерние элементы с помощью HTML <ul></ul>? Я пробовал использовать PHP Do While, но застрял только на 1 уровне.

MySQL (выберите * от пользователя)

Изображение 174551

Желаемый выход

В виде дерева

Изображение 174551

Посмотреть список

Изображение 174551

Теги:
parent-child

2 ответа

1

Легко было сделать это с помощью массива. Надеюсь, поможет.

$data = array();
foreach ($result as $item) {
    $key = $item['name']; // or $item['info_id']
    if (!isset($data[$key])) {
        $data[$key] = array();
    }

    $data[$key][] = $item;
}
  • 0
    Привет, я обновил свои вопросы, ваш ответ все еще действителен?
0

Вы можете использовать этот код:

$aResults; // it is your mysql result (array)

$resultSorted = array();
$resultSorted = recursiveList($aResults, '');

function recursiveList(&$aResults, $iKey)
{
    $aChilds = '<ul>';
    foreach ($aResults as $iLoopKey => $aResult) {
        if ($aResult['parent'] == $iKey) {
            unset($aResults[$iLoopKey]);
            $aChilds .= '<li>' . $aResult['name'] . '</li>';
            $aChilds .= recursiveList($aResults, $aResult['name']);
        }
    }
    return $aChilds . '</ul>';
}

// Output example
echo '<pre>';
print_r($resultSorted);

В результате я получил:

Изображение 174551

Также лучше использовать 'parent_id' вместо 'parent' в ваших таблицах.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню