Сначала получите ваши данные из базы данных и создайте массив
$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']));
}
и использовать его с имплозой:
$catid = 6;
$breadcrumbs = implode(' > ', build_breadcrumbs($pages, $catid));
echo $breadcrumbs;
Это дает вам возможность определить разделитель вне функции. Надеюсь, это поможет.