利用数据库表实现无限级分类

<?php

/*
	利用数据库表实现无限级分类
	数据库表的设计思路:

	id		name		pid		path
	1		java		0		0
	2		php		0		0
	3		java基础	        1		0-1
	4		php基础		2		0-2
	5		java数组        3		0-1-3
	6		php变量		4		0-2-4

	说明:
	pid  父类id
	path 整个分类的路径   父类的id-子类的id
	如果插入新的数据path列则可以父的path+新的id
*/

//模拟数据
$data = array(
	array(
		'id' => 1,
		'name' => 'java',
		'pid' => 0,
		'path' => '0'
	),
	array(
		'id' => 2,
		'name' => 'php',
		'pid' => 0,
		'path' => '0'
	),
	array(
		'id' => 3,
		'name' => 'java基础',
		'pid' => 1,
		'path' => '0-1'
	),
	array(
		'id' => 4,
		'name' => 'php基础',
		'pid' => 2,
		'path' => '0-2'
	),
	array(
		'id' => 5,
		'name' => 'java数组',
		'pid' => 3,
		'path' => '0-1-3'
	),
	array(
		'id' => 6,
		'name' => 'php变量',
		'pid' => 4,
		'path' => '0-2-4'
	),
);

/*
echo '<pre>';
print_r($data);
echo '</pre>';
*/

//设置分级字段
foreach($data as &$row) {
	//计算-出现的个数
	$num = substr_count($row['path'],'-');
	if($row['pid'] > 0) {
		//设置前缀字符  |--
		$rep = '|'.str_repeat('--',$num);
	}else {
		$rep = '';	
	}
	
	//在数组里设置一个新的字段,存储分级的结果
	$row['tree'] = $rep.$row['name'];
}

//取得分级的排序数组
/*
	思路:用path+id 取得一个数值。利用此数值来排序
	Array ( 
			[0] => 0-1 
			[1] => 0-2 
			[2] => 0-1-3 
			[3] => 0-2-4 
			[4] => 0-1-3-5 
			[5] => 0-2-4-6 )
*/
foreach($data as $row2) {
	$arr[] = $row2['path'].'-'.$row2['id'];
}


//排序
array_multisort($arr, $data);//第二个数组根据对应第一个数组后也进行排序。 

/*
	$arr排序后的结果:
	Array ( [0] => 0-1 
			[1] => 0-1-3 
			[2] => 0-1-3-5
			[3] => 0-2 
			[4] => 0-2-4 
			[5] => 0-2-4-6 )
	
*/

//取得排序后的分级结果
foreach($data as $row3) {
	echo $row3['tree'].'<br/>';
}

/*
java
|--java基础
|----java数组
php
|--php基础
|----php变量
*/

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
打开dns.37it.cn免费申请二域名解析方可使用 否则会出现00002993错误 用替换工具ultrareplace,文本编辑工具:Notepad++ 下面是需要替换的地方 ceshi.vvei.cn 超人脉管家 http://mp.weixin.qq.com/s?__biz=MzA4MTI1OTI1OA==&mid=212268202&idx=1&sn=581c81665c013e1ee5c01db440df2593#rd 这个到时候自己撰写一份新手指南替换 掉 http://123.com/index.php?g=Admin&m=Login&a=index 后台地址 admin admin888 微信管理>>自定义回复 修改 http://ceshi.vvei.cn/ 替换为 你的网站 1、数据库连接地址:Public\Conf\config.php 2、微信菜单修改:Public\Conf\button_config.php,然后“微信管理”-“菜单管理”-“重新生成菜单”。 另下面三行代码请修改: $link_config (还没有关注的,引导关注,点击“立即关注”进入微信文章) $config_good_pic (购买时,页面上面的产品图) $headimgurl (没有购买前的头部左上角LOGO) 3、公众号里面的支付授权目录:直接域名就可以 支付回调URL:直接域名就可以 告警通知URL:先空着 4、更“换推广二维码”图片,图片在根目录保持格式、名字不变。记得在服务器根目录/imgpublic里删除其它多余的图片,只留benbendou.jpg即可。 5、页面的CSS在这里改:Application\Tpl\App\default\Public\Static\css 6、如果头像出不来,可以把根目录的imgpublic文件夹权限设为777 7、微信支付前显示的图片: Application\Tpl\App\default\Public\Static\images\productsinfo.jpg 对应更改的文件:Application\Tpl\App\default\Index\pay.html 8、更改下单时的“备注”内容:Application\Tpl\App\default\Index\index.html 9、关于修改微信关注后回复的内容目录地址: Application\Lib\Action\Admin\WechatAction.class.php 可修改第249,263,267行,可修改中文汉字,不要修改参数代码。 =============================================================== 后台登录:http://您的域名/index.php?g=Admin 初始帐号:admin 密 码:admin888

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值