簡體   English   中英

像這樣創建一個“指南欄”,在php + mysql的網頁上面?

[英]Creating a “guide bar” like this, above a web page by php+mysql?

我想創建一個“指南欄”(我不知道它的正確名稱)。 我有一個名為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

首先從數據庫中獲取數據並構建一個數組

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

這使您可以選擇在函數外部定義分隔符。 希望有所幫助。

它們被稱為面包屑。 這里有一個可能有用的教程: http//www.mindpalette.com/tutorials/breadcrumbs/index.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM