「ガイドバー」を作りたい(正しい名前がわかりません)。cat
次のデータを持つ という名前のテーブルがあります。
catid catname 親 ID 1 ニュース null 2 スポーツ 1 3 健康 1 4 テニス 2 5 サッカー 2 6 サッカー 5
私のページは次を受け取ります:$catid=6
、そして私は作成したい:
ニュース>スポーツ>サッカー>サッカー
「ガイドバー」を作りたい(正しい名前がわかりません)。cat
次のデータを持つ という名前のテーブルがあります。
catid catname 親 ID 1 ニュース null 2 スポーツ 1 3 健康 1 4 テニス 2 5 サッカー 2 6 サッカー 5
私のページは次を受け取ります:$catid=6
、そして私は作成したい:
ニュース>スポーツ>サッカー>サッカー
まず、データベースからデータを取得し、アレイを構築します
$q = mysql_query("SELECT catid, catname, parentid FROM cat");
$pages = array();
while($r = mysql_fetch_assoc($q)) {
$pages[$r['catid']] = array('catname' => $r['catname'], 'parentid' => $r['parentid']);
}
ブレッドクラムを作成するには、再帰関数を使用します。
function build_breadcrumbs($pages, $catid) {
if(is_null($catid) || empty($catid)) return;
return build_breadcrumbs($pages, $pages[$catid]['parentid']).$pages[$catid]['catname'].' > ';
}
この関数は、親のブレッドクラム+現在のブレッドクラムを返します。次のような関数を使用します。
$catid = 6;
$breadcrumbs = trim(build_breadcrumbs($pages, $catid), ' >');
echo $breadcrumbs;
または、配列がもっと好きな場合は、次のような関数を作成できます。
function build_breadcrumbs($pages, $catid) {
if(is_null($catid) || empty($catid)) return array();
return array_merge(build_breadcrumbs($pages, $pages[$catid]['parent']), array($pages[$catid]['name']));
}
implodeで使用します。
$catid = 6;
$breadcrumbs = implode(' > ', build_breadcrumbs($pages, $catid));
echo $breadcrumbs;
これにより、関数の外部でセパレーターを定義するオプションが提供されます。お役に立てば幸いです。
それらはパン粉と呼ばれます。ここに役立つチュートリアルがあります: http://www.mindpalette.com/tutorials/breadcrumbs/index.php