本实例讲解了php实现面包屑导航的方法,面包屑导航在项目非常实用,在此处就写一个这方面的实现。
path表示所有的祖先id,fullpath表示所有的祖先id和本身id
1
2
3
4
5
6
7
8
9
10
11
|
--
-- 表的结构 `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 ;
|
数据
1
2
3
4
5
6
7
8
9
10
11
12
13
|
--
-- 转存表中的数据 `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' );
|
数据库连接:
1
2
3
4
5
6
7
8
9
|
<?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());
?>
|
主函数:
1
2
3
4
5
6
7
8
9
10
11
12
|
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 ;
}
|
输出:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
// 简单输出
$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程序设计有所帮助。