Создание «панели навигации», подобной этой, над веб-страницей с помощью php + mysql? - PullRequest
1 голос
/ 02 декабря 2009

Я хочу создать «направляющую панель» (я не знаю ее правильного названия). У меня есть таблица с именем cat, которая содержит следующие данные:

catid        catname         parentid
1            news            null
2            sport           1
3            health          1
4            tennis          2
5            football        2
6            soccer          5

Моя страница получает: $catid=6, и я хочу создать:

news>sport>football>soccer

Ответы [ 2 ]

3 голосов
/ 02 декабря 2009

Сначала получите ваши данные из базы данных и создайте массив

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

Это дает вам возможность определить разделитель вне функции. Надеюсь, это поможет.

1 голос
/ 02 декабря 2009

Их называют хлебными крошками. Здесь есть учебник, который может помочь: http://www.mindpalette.com/tutorials/breadcrumbs/index.php

...