هل ترغب في إنشاء "شريط دليل" مثل هذا فوق صفحة الويب باستخدام php+mysql؟

StackOverflow https://stackoverflow.com/questions/1833446

  •  11-09-2019
  •  | 
  •  

سؤال

أريد إنشاء "شريط دليل" (لا أعرف اسمه الصحيح).لقد حصلت على طاولة تسمى 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 مع الإسناد
لا تنتمي إلى StackOverflow
scroll top