• 技术文章 >后端开发 >php教程

    比较简单实用的PHP无限分类源码分享(思路不错)_PHP

    2016-06-01 12:14:41原创439
    下面一段代码是创建相应数据库的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;
    ?>



    上面的代码中其实中间有空格的输入效果还是非常不错的,请大家本地测试。因编辑器问题导致排版混乱。
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP无限分类
    上一篇:php中经典方法实现判断多维数组是否为空_PHP 下一篇:基于Snoopy的PHP近似完美获取网站编码的代码_PHP
    PHP编程就业班

    相关文章推荐

    • PHP 如何获取客户机的每一个请求• 请教php 能将整个目录下传吗?google 抽疯了• PHP XDebug扩充• 这类mp3途径是什么• !帮小弟我看看这个娶图函数到底出错在哪

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网