免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1626 | 回复: 0
打印 上一主题 下一主题

简单实用的PHP无限分类源码分享 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-23 11:18 |只看该作者 |倒序浏览
简单实用的PHP无限分类源码分享

转载自:玉米串

关于PHP的无限分类代码,网上已经有很多了,讲解的也很到位,在这里我分享一下我用着很顺手的一个。

下面一段代码是创建相应数据库的sql代码:
  1. 1 //////////////  2 //////无限分类的数据库设计及样例  3 //////////////  4 mysql> create database db_kind;  5 Query OK, 1 row affected  6    7 mysql> use db_kind;  8 Database changed  9 mysql> create table tb_kind( 10     -> id int not null auto_increment primary key, 11     -> pid int, 12     -> path varchar(200) 13     -> ); 14 Query OK, 0 rows affected 15   16 mysql> insert into tb_kind values(null,"新闻",0,0); 17 Query OK, 1 row affected 18   19 mysql> insert into tb_kind values(null,"视频",0,0); 20 Query OK, 1 row affected 21   22 mysql> insert into tb_kind values(null,"图片",0,0); 23 Query OK, 1 row affected 24   25 mysql> insert into tb_kind values(null,"博客",0,0); 26 Query OK, 1 row affected 27   28 mysql> insert into tb_kind values(null,"体育新闻",1,"0-1"); 29 Query OK, 1 row affected 30   31 mysql> insert into tb_kind values(null,"娱乐新闻",1,"0-1"); 32 Query OK, 1 row affected 33   34 mysql> insert into tb_kind values(null,"财经新闻",1,"0-1"); 35 Query OK, 1 row affected 36   37 mysql> select * from db_kind; 38 ERROR 1146 : Table 'db_kind.db_kind' doesnot exist 39 mysql> select * from tb 40 _kind; 41 +----+----------+-----+------+ 42 | id | pname    | pid | path | 43 +----+----------+-----+------+ 44 |  1 | 新闻     |   0 | 0    | 45 |  2 | 视频     |   0 | 0    | 46 |  3 | 图片     |   0 | 0    | 47 |  4 | 博客     |   0 | 0    | 48 |  5 | 体育新闻 |   1 | 0-1  | 49 |  6 | 娱乐新闻 |   1 | 0-1  | 50 |  7 | 财经新闻 |   1 | 0-1  | 51 +----+----------+-----+------+ 52 7 rows in set 53 mysql> insert into tb_kind values(null,"篮球新闻",5,"0-1-5"); 54 Query OK, 1 row affected 55   56 mysql> insert into tb_kind values(null,"足球新闻",5,"0-1-5"); 57 Query OK, 1 row affected 58   59 mysql> select * from tb_kind; 60 +----+----------+-----+-------+ 61 | id | pname    | pid | path  | 62 +----+----------+-----+-------+ 63 |  1 | 新闻     |   0 | 0     | 64 |  2 | 视频     |   0 | 0     | 65 |  3 | 图片     |   0 | 0     | 66 |  4 | 博客     |   0 | 0     | 67 |  5 | 体育新闻 |   1 | 0-1   | 68 |  6 | 娱乐新闻 |   1 | 0-1   | 69 |  7 | 财经新闻 |   1 | 0-1   | 70 |  8 | 篮球新闻 |   5 | 0-1-5 | 71 |  9 | 足球新闻 |   5 | 0-1-5 | 72 +----+----------+-----+-------+ 73 9 rows in set 74   75 mysql> insert into tb_kind values(null,"NBA",8,"0-1-5-8"); 76 Query OK, 1 row affected 77   78 mysql> insert into tb_kind values(null,"CBA",8,"0-1-5-8"); 79 Query OK, 1 row affected 80   81 mysql> select * from tb_kind; 82 +----+----------+-----+---------+ 83 | id | pname    | pid | path    | 84 +----+----------+-----+---------+ 85 |  1 | 新闻     |   0 | 0       | 86 |  2 | 视频     |   0 | 0       | 87 |  3 | 图片     |   0 | 0       | 88 |  4 | 博客     |   0 | 0       | 89 |  5 | 体育新闻 |   1 | 0-1     | 90 |  6 | 娱乐新闻 |   1 | 0-1     | 91 |  7 | 财经新闻 |   1 | 0-1     | 92 |  8 | 篮球新闻 |   5 | 0-1-5   | 93 |  9 | 足球新闻 |   5 | 0-1-5   | 94 | 10 | NBA      |   8 | 0-1-5-8 | 95 | 11 | CBA      |   8 | 0-1-5-8 | 96 +----+----------+-----+---------+ 97 11 rows in set 98   99 mysql> select concat(path,"-",id) from tb_kind;100 +---------------------+101 | concat(path,"-",id) |102 +---------------------+103 | 0-1                 |104 | 0-2                 |105 | 0-3                 |106 | 0-4                 |107 | 0-1-5               |108 | 0-1-6               |109 | 0-1-7               |110 | 0-1-5-8             |111 | 0-1-5-9             |112 | 0-1-5-8-10          |113 | 0-1-5-8-11          |114 +---------------------+115 11 rows in set116  117 mysql> select concat(path,"-",id) from tb_kind;118 +---------------------+119 | concat(path,"-",id) |120 +---------------------+121 | 0-1                 |122 | 0-2                 |123 | 0-3                 |124 | 0-4                 |125 | 0-1-5               |126 | 0-1-6               |127 | 0-1-7               |128 | 0-1-5-8             |129 | 0-1-5-9             |130 | 0-1-5-8-10          |131 | 0-1-5-8-11          |132 +---------------------+133 11 rows in set134  135 mysql> select concat(path,"-",id) as abs from tb_kind order by abs.path;136 ERROR 1054 : Unknown column 'abs.path' in 'order clause'137 mysql> select concat(path,"-",id) as abs from tb_kind order by abs138 ;139 +------------+140 | abs        |141 +------------+142 | 0-1        |143 | 0-1-5      |144 | 0-1-5-8    |145 | 0-1-5-8-10 |146 | 0-1-5-8-11 |147 | 0-1-5-9    |148 | 0-1-6      |149 | 0-1-7      |150 | 0-2        |151 | 0-3        |152 | 0-4        |153 +------------+154 11 rows in set155 mysql> select concat(path,"-",id) as,id,name,path abs from tb_kind order by abs;156 ERROR 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id,name,path abs from tb_kind order by abs' at line 1157 mysql> select concat(path,"-",id) as abs,158 id,pname,path abs from tb_kind order by abs;159 +------------+----+----------+---------+160 | abs        | id | pname    | abs     |161 +------------+----+----------+---------+162 | 0-1        |  1 | 新闻     | 0       |163 | 0-1-5      |  5 | 体育新闻 | 0-1     |164 | 0-1-5-8    |  8 | 篮球新闻 | 0-1-5   |165 | 0-1-5-8-10 | 10 | NBA      | 0-1-5-8 |166 | 0-1-5-8-11 | 11 | CBA      | 0-1-5-8 |167 | 0-1-5-9    |  9 | 足球新闻 | 0-1-5   |168 | 0-1-6      |  6 | 娱乐新闻 | 0-1     |169 | 0-1-7      |  7 | 财经新闻 | 0-1     |170 | 0-2        |  2 | 视频     | 0       |171 | 0-3        |  3 | 图片     | 0       |172 | 0-4        |  4 | 博客     | 0       |173 +------------+----+----------+---------+174 11 rows in set175 mysql>下面是php源文件:

  2. 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>无标题文档</title> 6 </head> 7   8 <body> 9 <!--显示结果10 新闻11     体育新闻12         篮球新闻13             NBA14             CBA15         足球新闻16     娱乐新闻17     财经新闻18 视频19 图片20 博客21 -->22 <?23 $conn=mysql_connect("localhost","root","root");24 mysql_select_db("db_kind");25 mysql_query("set names utf8");26 $sql="select concat(path,'-',id) as abspath,id,pname,path from tb_kind order by abspath";27 $rs=mysql_query($sql);28 while($result=mysql_fetch_assoc($rs)){29     $num=count(explode("-",$result[path]))-1;30     $new_str=str_repeat("---",$num);31     echo $new_str.$result[pname];32     echo "<br>";33 }34 $str=str_repeat("=",10);35 echo $str;36 $num=count(explode("-","0-1-5-8"))-1;37 echo $num;38  39  40 ?>41 </body>42 </html>
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP