Açılır menü yapmakta sorun yaşıyorum.

Fonksiyon bu şekilde çalışıyor


Benim istediğim bu şekilde çalışması

Veri Tabanı :
-id
-sayfa_ust_id
-sayfa_baslik

Fonksiyon kodu;

function Menu($parent_id) {
    $database = new Connection();
    $db = $database->open();
    $menu = "";
    $result = $db->query("SELECT * FROM sayfalar WHERE sayfa_ust_id = '".$parent_id."' AND sayfa_durum = 'Aktif'");
    $result->execute();
    if ($parent_id !== 0) {
        while($row = $result-> fetch (PDO::FETCH_ASSOC)){
            $menu .= '<li class="nav-item"><a class="nav-link" href="pages.php?id=' . $row['id']. '"><span class="sidebar-text">' . $row['sayfa_baslik'] . '</span></a></a>' . Menu($row['id']) . '</li>';
        }
    }
    if ($parent_id ==  0) {
        while($row = $result-> fetch(PDO::FETCH_ASSOC)) {
            $menu .= '
            <li class="nav-item">
            <span class="nav-link collapsed d-flex justify-content-between align-items-center" data-bs-toggle="collapse" data-bs-target="#sub-' . $row['id'] . '">
            <span class="sidebar-text">' . $row['sayfa_baslik'] . '</span>
            <span class="link-arrow"><svg class="icon icon-sm" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"></path></svg></span>
            </span>
            <div class="multi-level collapse" role="list" id="sub-' . $row['id'] . '" aria-expanded="false">
            <ul class="flex-column nav">' . Menu($row['id']) . '</ul></div></li>';
        }
    }
    return $menu;
}