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

    PHP 无限分类三种方式 非函数的递归调用!_php技巧

    2016-05-17 09:15:56原创417
    php无限分类大致有三种方式,

      1、数据库通过设置父类ID来进行唯一索引,然后使用函数的递归调用实现无限分类;

      2、数据库设计通过特定格式进行排列,然后使用mysql查询关键函数:concat。程序实现比较简单;

      3、第三种不是太了解, 好像要使用到算法和数据结构进行排列。

    今天我主要分享下第二种方式,一开始也是找了很多资料,确实比较难理解。不过最终还是给搞明白了,因此记下随笔,希望通过这篇文章能够帮助到大家。

    一、数据库设计:  


    复制代码 代码如下:

    --
    -- Table structure for table `category`
    --
    CREATE TABLE IF NOT EXISTS `category` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `catpath` varchar(255) DEFAULT NULL,
    `name` varchar(255) DEFAULT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;
    --
    -- Dumping data for table `category`
    --
    INSERT INTO `category` (`id`, `catpath`, `name`) VALUES
    (1, '0', '网站首页'),
    (2, '0-1', 'Linux OS'),
    (3, '0-1', 'Apache服务器'),
    (4, '0-1', 'MySQL数据库'),
    (5, '0-1', 'PHP脚本语言'),
    (6, '0-1-2', 'Linux 系统教程'),
    (7, '0-1-2', 'Linux 网络技术'),
    (8, '0-1-2', 'Linux 安全基础'),
    (9, '0-1-2-7', 'Linux LAMP'),
    (10, '0-1-3-10', 'apache Server');

    这里说明下,catpath的-链接符号不是固定的,可以选择,;等特殊符号。
    二、 PHP代码实现:
    复制代码 代码如下:

    $conn = mysql_connect ( 'localhost', 'root', '' );
    mysql_select_db ( 'test', $conn );
    mysql_query ( 'set names UTF8' );
    $sql = "select id,concat(catpath,'-',id) as abspath,name from category order by abspath";
    $query = mysql_query ( $sql );
    while ( $row = mysql_fetch_array ( $query ) ) {
    /**
    * 第一种展示方法
    */
    /*$space = str_repeat ( ' ', count ( explode ( '-', $row ['abspath'] ) ) - 1 );
    echo $space . $row ['name'] . '
    ';*/
    /**
    * 第二种展示方法
    */
    $space = str_repeat ( ' ', count ( explode ( '-', $row ['abspath'] ) ) - 1 );
    $option .= '';
    }
    echo '';

    上效果图:

        

    这里有几个关键的地方需要注意下:
     1、在数据库查询字段是用了concat函数,不了解的地方可以google下。
     2、第二个地方主要是用到了php中的str_repeat巧妙的设置了空格。
    有错误之处,望mail: chenghuiyong1987@gmail.com或者留言

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:无限分类
    上一篇:PHP session会话的安全性分析_php技巧 下一篇:php中防止伪造跨站请求的小招式_php技巧
    千万级数据并发解决方案

    相关文章推荐

    • 究竟是什么令微软为Windows改进PHP_PHP教程• 字符串操作函数_PHP教程• php堆排序实现原理与应用程序代码_PHP教程• php教程 插件机制在PHP中实现方案_PHP教程• php中global和$GLOBALS[]的分析之一_PHP教程
    1/1

    PHP中文网