コンテンツページのブレッドクラムを作成できるようにしたいのですが、コンテンツの一部が含まれるカテゴリの深さは無制限である可能性があるため、各カテゴリを1つずつ取得せずにそれを実行する方法がわかりません。親を取得するなど。もっと簡単な方法のようですが、理解できません。
記事の表があります
article_id
article_name
article_cat_id
カテゴリテーブルもあります
cat_id
cat_name
cat_parent
猫の親は、カテゴリが子である別のカテゴリのIDです。
このようなブレッドクラムを作成する必要があると私が言える限り、5つのカテゴリの深さの記事を想像してみてください(サンプルコードは明らかに入力をエスケープする必要がありますなど)
<?php
$breadcrumbs = array(
'Category 5',
'Content Item'
);
$cat_parent = 4;
while($cat_parent != 0) {
$query = mysql_query('SELECT * FROM categories WHERE cat_id = '.$cat_parent);
$result = mysql_fetch_array($query, MYSQL_ASSOC);
array_unshift($breadcrumbs, $result['cat_name']);
$cat_parent = $result['cat_parent'];
}
?>
これは私に
array(
'Category 1',
'Category 2',
'Category 3',
'Category 4',
'Category 5',
'Content Item'
)
これはパンくずリストに使用できますが、5回のクエリで実行できますが、これはあまり好ましくありません。
誰かがより良い解決策を提案できますか?