Повторение через связанные данные из базы данных в PHP - PullRequest
0 голосов
/ 30 апреля 2020

Вот в чем дело, я пытаюсь сгенерировать html неупорядоченный список, используя данные из базы данных в том порядке, в котором они связаны. Допустим, A является родителем B , а C и B является родителем D i. хотите, чтобы B и C были двумя элементами списка внутри неупорядоченного списка внутри A и D как элемента списка внутри неупорядоченного списка внутри B и так далее ...

структура моего стола выглядит следующим образом:

+-----+------+--------+
| uid | name | parent |
+-----+------+--------+
|   1 | A    |      0 |
|   2 | B    |      1 |
|   3 | C    |      1 |
|   4 | D    |      2 |
|   5 | E    |      3 |
|   7 | G    |      3 |
|   9 | H    |      4 |
|  10 | I    |      4 |
|  11 | J    |      7 |
+-----+------+--------+

PHP код

function recurse($id){
    global $conn;
    $sql = "SELECT * FROM binary_tbl WHERE `uid`='{$id}' ";
    // echo $sql;
    $res = $conn->query($sql);
    // var_dump($conn);
    $output = '';
    while($r = $res->fetch_assoc()){

        $output .= "<li> <a href=\"#\">".$r['name']."</a>";
        $query_member = "SELECT * FROM binary_tbl WHERE parent= $id";
        $res_member = $conn->query($query_member);
        while($rm = $res_member->fetch_assoc())
        {
                    $output .=  recurse($rm['uid']).'</li>';
        }       
        return '<ul>'.$output.'</ul>';
    }
}

Ожидаемый результат

<ul>
    <li>
        <a href="#">A</a>
        <ul>
            <li>
                <a href="#">B</a>
                <ul>
                    <li>
                        <a href="#">D</a>
                        <ul>
                            <li><a href="#">H</a></li>
                            <li><a href="#">I</a></li>
                        </ul>
                    </li>
                </ul>
            </li>
            <li>
                <a href="#">C</a>
                <ul>
                    <li><a href="#">E</a></li>
                    <li>
                        <a href="#">G</a>
                        <ul>
                            <li><a href="#">J</a></li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

Вывод: вывод содержит слишком много неупорядоченных тегов списка и не соответствует порядку, в котором я хочу быть

<ul>
                <li> <a href="#">A</a>
                    <ul>
                        <li> <a href="#">B</a>
                            <ul>
                                <li> <a href="#">D</a>
                                    <ul>
                                        <li> <a href="#">H</a></li>
                                    </ul>
                                </li>
                                <ul>
                                    <li> <a href="#">I</a></li>
                                </ul>
                            </ul>
                        </li>
                    </ul>
                </li>
                <ul>
                    <li> <a href="#">C</a>
                        <ul>
                            <li> <a href="#">E</a></li>
                        </ul>
                    </li>
                    <ul>
                        <li> <a href="#">G</a>
                            <ul>
                                <li> <a href="#">J</a></li>
                            </ul>
                        </li>
                    </ul>
                </ul>
            </ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...