我想創建一個「導覽欄」(我不知道它的正確名稱)。我有一個名爲cat
表具有以下數據:在php + mysql的網頁上面創建這樣的「指南欄」?
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
我想創建一個「導覽欄」(我不知道它的正確名稱)。我有一個名爲cat
表具有以下數據:在php + mysql的網頁上面創建這樣的「指南欄」?
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
首先從數據庫中獲取數據,並建立一個數組
$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;
那爲您提供了在函數外定義分隔符的選項。希望有所幫助。
Tatu Ulmanen;非常感謝我使用了最後一條建議,它工作得很好,我有可能指導我如何給每個貓名添加一個鏈接?所以當用戶點擊例如足球去足球網頁。 – Kaveh 2009-12-03 01:53:15
在build_breadcrumbs函數中,用''.$pages[$catid]['name'].''替換'$ pages [$ catid] ['name']'。 – 2009-12-03 07:17:49
他們被稱爲麪包屑。這裏有一個教程,可以幫助:http://www.mindpalette.com/tutorials/breadcrumbs/index.php
感謝您的指導,但您建議我認爲在頁面層次結構上的工作鏈接,假設我只有一個頁面的運動,但運動有3個層次,所以我如何顯示同一頁面的3個級別? – Kaveh 2009-12-03 02:12:35
它的名字是'breadcrumbs' – Jakub 2009-12-02 15:22:54