本实例讲解了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程序设计有所帮助。