php无限分类源码,比较简单实用的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源文件:

无标题文档

$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 "
";

}

$str=str_repeat("=",10);

echo $str;

$num=count(explode("-","0-1-5-8"))-1;

echo $num;

?>

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值