2012-03-31 140 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 />'; 
     } 
    } 


} 

正如你所看到的,我已經'硬編碼'每個while循環主要是一個「主類別」,「一個子類別」,最後是子類別。 但是我覺得我可以改變它,自動地,循環子類別中的子類別,如果有的話。循環的子類別,子類別等

結構簡單我的SQL: ID 父 標題 描述

我無能,我應該怎麼解決這個小問題... while循環在if語句的東西?幫幫我。

+0

您使用的是什麼數據庫系統(名稱和版本)? – 2012-03-31 20:34:07

+0

我正在使用MySQL 5.5.16 – John 2012-03-31 20:36:39

+2

用MySQL選擇所有類別並不容易,然後用PHP縮小它的範圍?僅使用MySQL查詢遍歷類樹是一種痛苦。 – 2012-03-31 20:50:44

回答

0

如果類別數量不是太大,可以做什麼?從數據庫中一次獲取所有類別,然後在php中構建一個多維數組。

有關更多詳細信息,請參閱this question and the answers