2012-03-31 5 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 親 タイトル 説明

私はこの小さな問題を解決する必要がありますどのように無知だ... if文か何かの上にwhileループA?私を助けてください。

+0

どのデータベースシステム(名前とバージョン)を使用していますか? –

+0

私はMySQLを使用しています5.5.16 – John

+2

MySQLですべてのカテゴリを選択するのは簡単ではないでしょうか?カテゴリツリーをトラバースすることは、MySQLクエリのみを使用することによる苦痛です。 –

答えて

0

カテゴリの数が大きすぎない場合は、データベース内のすべてのカテゴリを取得し、PHPで多次元配列を作成します。

詳細はthis question and the answersを参照してください。

関連する問題