1

「ガイドバー」を作りたい(正しい名前がわかりません)。cat次のデータを持つ という名前のテーブルがあります。

catid catname 親 ID
1 ニュース null
2 スポーツ 1
3 健康 1
4 テニス 2
5 サッカー 2
6 サッカー 5

私のページは次を受け取ります:$catid=6、そして私は作成したい:

ニュース>スポーツ>サッカー>サッカー
4

2 に答える 2

3

まず、データベースからデータを取得し、アレイを構築します

$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;

これにより、関数の外部でセパレーターを定義するオプションが提供されます。お役に立てば幸いです。

于 2009-12-02T15:21:07.477 に答える
1

それらはパン粉と呼ばれます。ここに役立つチュートリアルがあります: http://www.mindpalette.com/tutorials/breadcrumbs/index.php

于 2009-12-02T15:03:09.923 に答える