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


Posted in PHP onOctober 13, 2011

下面一段代码是创建相应数据库的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://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.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 相关文章推荐
社区(php&amp;&amp;mysql)一
Oct 09 PHP
php 无法载入mysql扩展
Mar 12 PHP
PHP高级对象构建 多个构造函数的使用
Feb 05 PHP
解析关于wamp启动是80端口被占用的问题
Jun 21 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
Jul 03 PHP
phpword插件导出word文件时中文乱码问题处理方案
Aug 19 PHP
PHP使用header()输出图片缓存实例
Dec 09 PHP
php延迟静态绑定实例分析
Feb 08 PHP
php对文件进行hash运算的方法
Apr 03 PHP
如何正确配置Nginx + PHP
Jul 15 PHP
php封装的验证码工具类完整实例
Oct 19 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 PHP
php 错误处理经验分享
Oct 11 #PHP
php购物车实现代码
Oct 10 #PHP
使用PHP实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
Oct 09 #PHP
PHP实现时间轴函数代码
Oct 08 #PHP
PHP+Mysql+jQuery实现动态展示信息
Oct 08 #PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
Oct 08 #PHP
php实现用户在线时间统计详解
Oct 08 #PHP
You might like
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
php curl批处理实现可控并发异步操作示例
2018/05/09 PHP
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
一个仿糯米弹框效果demo
2014/07/22 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
JS实现简易刻度时钟示例代码
2017/03/11 Javascript
mongoose中利用populate处理嵌套的方法
2017/05/26 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
关于vue项目中搜索节流的实现代码
2019/09/17 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
修改vue源码实现动态路由缓存的方法
2020/01/21 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
python递归全排列实现方法
2018/08/18 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
Python3如何使用tabulate打印数据
2020/09/25 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
Sunglasses Shop德国站:欧洲排名第一的太阳镜网站
2017/08/01 全球购物
Sandro法国官网:法国成衣品牌
2019/08/28 全球购物
C#笔试题集合
2013/06/21 面试题
Unix/Linux开发面试题
2016/08/16 面试题
廉洁校园实施方案
2014/05/25 职场文书
教师职位说明书
2014/07/29 职场文书
高三毕业评语
2014/12/31 职场文书
党员转正申请报告
2015/05/15 职场文书
成事在人观后感
2015/06/16 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
保姆聘用合同
2015/09/21 职场文书