本实例讲解了php实现面包屑导航的方法,面包屑导航在项目非常实用,在此处就写一个这方面的实现。
path表示所有的祖先id,fullpath表示所有的祖先id和本身id
---- 表的结构 `tp_likecate`--CREATE TABLE IF NOT EXISTS `tp_likecate` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `catename` varchar(24) NOT NULL, `path` varchar(10) NOT NULL, `fullpath` varchar(20) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
数据
---- 转存表中的数据 `tp_likecate`--INSERT INTO `tp_likecate` (`id`, `catename`, `path`, `fullpath`) VALUES(1, "手机", "", ",1"),(2, "功能手机", "1", "1,2"),(3, "老人手机", "1,2", "1,2,3"),(4, "儿童手机", "1,2", "1,2,4"),(5, "智能手机", "1", "1,5"),(6, "android手机", "1,5", "1,5,6"),(7, "IOS手机", "1,5", "1,5,7"),(8, "WinPhoto手机", "1,5", "1,5,8");
数据库连接:
<?php $db_host = "localhost";$db_user = "root";$db_password = "";$db_name = "test";$con = mysql_connect($db_host, $db_user, $db_password) or die(mysql_error());mysql_select_db($db_name, $con) or die(mysql_error());mysql_query("set names utf8") or die(mysql_error());?>主函数:
function likecate($path="") { // concat() 连接字段 $sql = "select id,catename,path, concat(path,",",id) as fullpath from tp_likecate order by fullpath asc"; $res = mysql_query($sql); $result = array(); while($row=mysql_fetch_assoc($res)) { $deep = count(explode(",", trim($row["fullpath"], ","))); // explode字符串转换为数组 implode数组转换为字符串 $row["catename"] = @str_repeat(" ", $deep)."|--".$row["catename"]; $result[] = $row; } return $result;}输出:
// 简单输出$res = likecate();echo "<select name="cate">";foreach($res as $key=>$val) { echo "<option>{$val["catename"]}</option>";}echo "</select>";echo "<br />";// 封装方法function getPathCate($cateid) { $sql = "select *,concat(path, ",",id) fullpath from tp_likecate where id = $cateid"; $res = mysql_query($sql); $row = mysql_fetch_assoc($res); $ids = $row["fullpath"]; $sql = "select * from tp_likecate where id in($ids) order by id asc"; $res = mysql_query($sql); $result = array(); while($row = mysql_fetch_assoc($res)) { $result[] = $row; } return $result;}// 加上了链接的参数function displayCatePath($cateid,$link="cate.php?cid=") { // 也可以组装 $res = getPathCate($cateid); $str = ""; foreach($res as $k=>$v) { $str.= "<a href="{$link}{$v["id"]}">{$v["catename"]}</a> > "; } return $str;}echo displayCatePath(4);效果:
以上就是php实现面包屑导航的详细步骤,希望对大家学习php程序设计有所帮助。