php+mysql实现无限级分类 | 树型显示分类关系

2016-02-19 09:02 69 1 收藏

只要你有一台电脑或者手机,都能关注图老师为大家精心推荐的php+mysql实现无限级分类 | 树型显示分类关系,手机电脑控们准备好了吗?一起看过来吧!

【 tulaoshi.com - Web开发 】

无限级分类,主要是通过储存上级分类的id以及分类路径来实现。由于数据的结构简单,所以要将分类的关系由树状显示,我只能想到用递归的方式给于实现。 


无限级分类,主要是通过储存上级分类的id以及分类路径来实现。由于数据的结构简单,所以要将分类的关系由树状显示,我只能想到用递归的方式给于实现,下面是分类数据表结构和自己写的一个树状显示函数,有什么不妥的地方希望大家能指出。 
表结构:id字段为分类标识,name字段为分类名,father_id字段为所属父分类的id,path字段为分类路径(储存该分类祖先的集合),isdir判断是否是目录(1为是,0为否)。

显示函数:

代码如下:
//$count为分类等级 
sort_list($str,$fatherid,$count) 

$rs = $this-sql-re_datas("select * from sort where father_id = fatherid"); 
$num = $this-sql-sql_numrows(); 
$i=0; 
$n = 1; 
while(isset($rs[$i])) 

$name = ""; 
for($n = 1 ; $n  $count ; $n++) 

$name.="│ "; 

if($i+1==$num) 

$name.="└─".$rs[$i][name]; 

else 

$name.="├─".$rs[$i][name]; 

if($rs[$i][isdir]) 

$str.="span style='color:#CCCCCC'".$name."/span"; 

else 

$str.=$name"; 

$temp = $count+1; 
$str = $this-sort_list($str,$rs[$i][id],$temp); 
$i++; 

return $str; 


  其中$this-sql对象为sql操作类对象,re_datas()函数返回查到的数组,sql_numrows()函数返回查询到的数目

  调用方法:$sort_list = sort_list($sort_list,0,1);

  以上为个人思想,还望大家多多指点

来源:http://www.tulaoshi.com/n/20160219/1589263.html

延伸阅读
标签: PHP
  本系统可以录入标题、内容、图片、相关软件,显示时会根据是否有有图片和相关软件来判断是否显示该项内容,打开页面显示的是最新的一片文章,点击目录会显示之前的文章。     建立channelimages和channelsoft目录,并把权限设为777。 ********************************* news表结构 **************************...
提供两种方式的分类树格式,表格和下拉框形式的树形结构 可以自定义表格和下拉框的样式,自定义以哪一列的参数为格式化数据,自定义层级关系参数,自定义表格列名称,也可以设置时间的格式化。 调用方式 表格方式: 代码如下: ?php $this-widget('ext.tree.widgets.TreeWidget',array(         ...
标签: PHP
一. 10句话 1.不要依赖register_global=ON的环境,从你刚懂得配置php运行环境甚至尚不明白register_global的ON/OFF会对自己有什么影响的那天起,就应该勇敢地把它设为OFF. 2.写程序前看看怎么用error_reporting. 3.不懂就问本身没错,但你需要在那之前查查手册。 4.当然,你需要懂得使用手册。手册上找不到答案的时候,应该考虑下网络上的搜索...
标签: PHP
  大家好!好久没有看到大家了,上次写了用PHP的通过文件操作的聊天室,当然是漏洞百出的,而且每一次刷新屏幕都很糟糕的!我想了好久,是不是能有一种方法不要刷新,就能取得发言的信息了?多用一个框架就能实现这个效果了,即多用一个框架我们称为getmsg,我们让getmeg去取得信息而且保证每一次取得的信息是最新的,就是上次取得的发言...
 这两天在csdn里转转,发现很多人问关于DBGRID或DBGRIDEH的分类显示的问题,今天闲下来,就这个问题聊两句。实际上对于DBGRID的自画,delphi 提供了两个事件供我们使用, 一个是画行的: OnDrawDataCell(Sender: TObject; const Rect: TRect;  Field: TField; State: TGridDrawState); 另一个是画列的: OnDrawColumnC...

经验教程

254

收藏

9
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部