Rekursive Baum-Traversierung mit mysql über PHP

Erstelle ich einen Fragebogen für einen Kunden, das erfordert, dass die Fragen, die organisiert werden durch 3 Lagen von Ebenen. Ich habe erfolgreich die U. I. aber ich habe versucht, für die letzten 3 Stunden ziehen Daten aus einer Datenbank in einer Weise, dass alles, was Belastungen an der richtigen Stelle. Die Datenbank organisiert ist wie so von dem client, so ich haben keine Kontrolle über Sie:

id    description    parentId    
1      Level 1        0           
2      Level 2        0           
3      Level 1a       1   
4      Level 1b       1 
5      Level 1a1      3      

Ich habe eine ähnliche Frage, die mir auf der Website, aber als ich versuchte, es ' s Lösung habe ich die folgenden auf wiederholen infinetly:

Code:

function makeList($par_id = 0) {
    //your sql code here
    $result = mysql_query("SELECT * FROM pB_test WHERE parentId = $par_id");
    $pages = mysql_fetch_array( $result );

    if (count($pages)) {
        echo '<ul>';
        foreach ($pages as $page) {
            echo '<li>', $page['description'];
                makeList($page['parentId']);
                echo '</li>';
        }
        echo '</ul>';
    }
}

makeList();

Ausgabe:

1
3
5
5
l
l
3
5
5
l
l
3
5
5
l
l
3
5
5
l
l

Weiß jemand wie man das beheben kann und was das Problem genau ist? Cheers

MySQL unterstützt keine rekursiven JOINs, das ist, was Sie wirklich brauchen, aber wenn Sie wissen, Sie haben nur drei Ebenen und wird immer nur drei Ebenen, können Sie auch einfach left join der Tabelle auf sich selbst drei mal

InformationsquelleAutor Keiran Lovett | 2012-06-12

Schreibe einen Kommentar