Bir "klavuz" oluşturma

2 Cevap php

Ben bir "klavuz" (Ben onun sağ ismini bilmiyorum) oluşturmak istiyorum. I cat aşağıdaki veri vardır adında bir tablo var:

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

$catid=6, ve ben oluşturmak istiyorum: Benim sayfa alır:

news>sport>football>soccer

2 Cevap

Öncelikle veritabanından veri almak ve bir dizi oluşturmak

$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']);
}

Kırıntıları oluşturmak için bir özyinelemeli işlevini kullanın:

function build_breadcrumbs($pages, $catid) {
    if(is_null($catid) || empty($catid)) return;
    return build_breadcrumbs($pages, $pages[$catid]['parentid']).$pages[$catid]['catname'].' > ';
}

Fonksiyonu mevcut kırıntıdaki + ebeveynin kırıntıları döndürür. Bu gibi işlevini kullanın:

$catid = 6;
$breadcrumbs = trim(build_breadcrumbs($pages, $catid), ' >');
echo $breadcrumbs;

Eğer daha fazla diziler gibi Ya da, bu gibi bir işlevi oluşturabilirsiniz:

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']));
}

ve implode ile kullanabilirsiniz:

$catid = 6;
$breadcrumbs = implode(' > ', build_breadcrumbs($pages, $catid));
echo $breadcrumbs;

Bu size işlevin dışında ayırıcı tanımlamak için seçeneği sunar. Umut olur.

Onlar ekmek kırıntısı denir. http://www.mindpalette.com/tutorials/breadcrumbs/index.php: yardımcı olabilir burada bir öğretici var