2012-03-31 12 views
0
$sth = $db->query("SELECT * FROM categories WHERE parent = 0"); 

$sth->setFetchMode(PDO::FETCH_ASSOC); 

while ($row = $sth->fetch()) { 

    echo $row['title'] . '<br />'; 

    $sth2 = $db->prepare("SELECT * FROM categories WHERE parent = ?"); 
    $sth2->bindParam(1, $row['id']); 
    $sth2->execute(); 

    while ($row2 = $sth2->fetch()) { 
     echo '..' . $row2['title'] . '<br />'; 

     $sth3 = $db->prepare("SELECT * FROM categories WHERE parent = ?"); 
     $sth3->bindParam(1, $row2['id']); 
     $sth3->execute(); 

     while ($row3 = $sth3->fetch()) { 
      echo '....' . $row3['title'] . '<br />'; 
     } 
    } 


} 

Wie Sie sehen, ich habe ‚hart codiert‘ jede while-Schleife für hauptsächlich eine „Hauptkategorie“, ‚eine Unterkategorie‘ und schließlich die Subkategorie es ist. Allerdings habe ich das Gefühl, dass ich das ändern könnte, um automatisch die Unterkategorien in den Unterkategorien zu durchlaufen, wenn es solche gibt.Schleife der Unterkategorien Unterkategorien usw.

Die Struktur ist einfach meine SQL: id Eltern Titel Beschreibung

ich ahnungslos bin, wie ich dieses kleine Problem lösen sollte ... Ein while-Schleife über eine if-Anweisung oder so etwas? Helfen Sie mir.

+0

Welches Datenbanksystem (Name und Version) benutzen Sie? –

+0

Ich verwende MySQL 5.5.16 – John

+2

Wäre es nicht einfacher, alle Ihre Kategorien mit MySQL auszuwählen und dann mit PHP einzugrenzen? Das Traversieren von Kategorienbäumen ist ein Schmerz, der nur MySQL-Abfragen verwendet. –

Antwort

0

Was Sie tun können, wenn die Anzahl der Kategorien nicht zu groß ist, erhalten Sie alle Kategorien auf einmal aus der Datenbank und erstellen Sie dann ein mehrdimensionales Array in PHP.

Weitere Details finden Sie unter this question and the answers.

Verwandte Themen