好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

关于PHP的无限分类代码,网上已经有很多了,讲

下面一段代码是创建相应数据库的sql代码:

复制代码 代码如下:

 //////////////    //////无限分类的数据库设计及样例    //////////////    mysql> create database db_kind;    Query OK, 1 row affected    mysql> use db_kind;    Database changed    mysql> create table tb_kind(      -> id int not null auto_increment primary key,      -> pid int,      -> path varchar(200)      -> );  Query OK, 0 rows affected  mysql> insert into tb_kind values(null,"新闻",0,0);  Query OK, 1 row affected  mysql> insert into tb_kind values(null,"视频",0,0);  Query OK, 1 row affected  mysql> insert into tb_kind values(null,"图片",0,0);  Query OK, 1 row affected  mysql> insert into tb_kind values(null,"博客",0,0);  Query OK, 1 row affected  mysql> insert into tb_kind values(null,"体育新闻",1,"0-1");  Query OK, 1 row affected  mysql> insert into tb_kind values(null,"娱乐新闻",1,"0-1");  Query OK, 1 row affected  mysql> insert into tb_kind values(null,"财经新闻",1,"0-1");  Query OK, 1 row affected  mysql> select * from db_kind;  ERROR 1146 : Table 'db_kind.db_kind' doesnot exist  mysql> select * from tb  _kind;  +----+----------+-----+------+  | id | pname    | pid | path |  +----+----------+-----+------+  |  1 | 新闻     |   0 | 0    |  |  2 | 视频     |   0 | 0    |  |  3 | 图片     |   0 | 0    |  |  4 | 博客     |   0 | 0    |  |  5 | 体育新闻 |   1 | 0-1  |  |  6 | 娱乐新闻 |   1 | 0-1  |  |  7 | 财经新闻 |   1 | 0-1  |  +----+----------+-----+------+  7 rows in set  mysql> insert into tb_kind values(null,"篮球新闻",5,"0-1-5");  Query OK, 1 row affected  mysql> insert into tb_kind values(null,"足球新闻",5,"0-1-5");  Query OK, 1 row affected  mysql> select * from tb_kind;  +----+----------+-----+-------+  | id | pname    | pid | path  |  +----+----------+-----+-------+  |  1 | 新闻     |   0 | 0     |  |  2 | 视频     |   0 | 0     |  |  3 | 图片     |   0 | 0     |  |  4 | 博客     |   0 | 0     |  |  5 | 体育新闻 |   1 | 0-1   |  |  6 | 娱乐新闻 |   1 | 0-1   |  |  7 | 财经新闻 |   1 | 0-1   |  |  8 | 篮球新闻 |   5 | 0-1-5 |  |  9 | 足球新闻 |   5 | 0-1-5 |  +----+----------+-----+-------+  9 rows in set  mysql> insert into tb_kind values(null,"NBA",8,"0-1-5-8");  Query OK, 1 row affected  mysql> insert into tb_kind values(null,"CBA",8,"0-1-5-8");  Query OK, 1 row affected  mysql> select * from tb_kind;  +----+----------+-----+---------+  | id | pname    | pid | path    |  +----+----------+-----+---------+  |  1 | 新闻     |   0 | 0       |  |  2 | 视频     |   0 | 0       |  |  3 | 图片     |   0 | 0       |  |  4 | 博客     |   0 | 0       |  |  5 | 体育新闻 |   1 | 0-1     |  |  6 | 娱乐新闻 |   1 | 0-1     |  |  7 | 财经新闻 |   1 | 0-1     |  |  8 | 篮球新闻 |   5 | 0-1-5   |  |  9 | 足球新闻 |   5 | 0-1-5   |  | 10 | NBA      |   8 | 0-1-5-8 |  | 11 | CBA      |   8 | 0-1-5-8 |  +----+----------+-----+---------+  11 rows in set  mysql> select concat(path,"-",id) from tb_kind;  +---------------------+  | concat(path,"-",id) |  +---------------------+  | 0-1                 |  | 0-2                 |  | 0-3                 |  | 0-4                 |  | 0-1-5               |  | 0-1-6               |  | 0-1-7               |  | 0-1-5-8             |  | 0-1-5-9             |  | 0-1-5-8-10          |  | 0-1-5-8-11          |  +---------------------+  11 rows in set  mysql> select concat(path,"-",id) from tb_kind;  +---------------------+  | concat(path,"-",id) |  +---------------------+  | 0-1                 |  | 0-2                 |  | 0-3                 |  | 0-4                 |  | 0-1-5               |  | 0-1-6               |  | 0-1-7               |  | 0-1-5-8             |  | 0-1-5-9             |  | 0-1-5-8-10          |  | 0-1-5-8-11          |  +---------------------+  11 rows in set  mysql> select concat(path,"-",id) as abs from tb_kind order by abs.path;  ERROR 1054 : Unknown column 'abs.path' in 'order clause'  mysql> select concat(path,"-",id) as abs from tb_kind order by abs  +------------+  | abs        |  +------------+  | 0-1        |  | 0-1-5      |  | 0-1-5-8    |  | 0-1-5-8-10 |  | 0-1-5-8-11 |  | 0-1-5-9    |  | 0-1-6      |  | 0-1-7      |  | 0-2        |  | 0-3        |  | 0-4        |  +------------+  11 rows in set  mysql> select concat(path,"-",id) as,id,name,path abs from tb_kind order by abs;  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 1  mysql> select concat(path,"-",id) as abs,  id,pname,path abs from tb_kind order by abs;  +------------+----+----------+---------+  | abs        | id | pname    | abs     |  +------------+----+----------+---------+  | 0-1        |  1 | 新闻     | 0       |  | 0-1-5      |  5 | 体育新闻 | 0-1     |  | 0-1-5-8    |  8 | 篮球新闻 | 0-1-5   |  | 0-1-5-8-10 | 10 | NBA      | 0-1-5-8 |  | 0-1-5-8-11 | 11 | CBA      | 0-1-5-8 |  | 0-1-5-9    |  9 | 足球新闻 | 0-1-5   |  | 0-1-6      |  6 | 娱乐新闻 | 0-1     |  | 0-1-7      |  7 | 财经新闻 | 0-1     |  | 0-2        |  2 | 视频     | 0       |  | 0-3        |  3 | 图片     | 0       |  | 0-4        |  4 | 博客     | 0       |  +------------+----+----------+---------+  11 rows in set  mysql>

下面是php源文件:

复制代码 代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://HdhCmsTestw3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://HdhCmsTestw3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> <!--显示结果 新闻 体育新闻 篮球新闻 NBA CBA 足球新闻 娱乐新闻 财经新闻 视频 图片 博客 --> <? $conn=mysql_connect("localhost","root","root"); mysql_select_db("db_kind"); mysql_query("set names utf8"); $sql="select concat(path,'-',id) as abspath,id,pname,path from tb_kind order by abspath"; $rs=mysql_query($sql); while($result=mysql_fetch_assoc($rs)){ $num=count(explode("-",$result[path]))-1; $new_str=str_repeat("---",$num); echo $new_str.$result[pname]; echo "<br>"; } $str=str_repeat("=",10); echo $str; $num=count(explode("-","0-1-5-8"))-1; echo $num; ?> </body> </html>

上面的代码中其实中间有空格的输入效果还是非常不错的,请大家本地测试。因编辑器问题导致排版混乱。

查看更多关于关于PHP的无限分类代码,网上已经有很多了,讲的详细内容...

  阅读:37次