php分类管理,PHP+MYSQL实现无限级分类管理

PHP+MYSQL实现无限级分类管理

一,前言

很多知识用到时总是不太把握,往往都得要上网找资料查一番。

将一些实用的资料收藏在这里,作备忘之用。本贴随时会更新。

皆为学习。

简述:结合TP【Thinkphp】,功能简单,文章末尾提供附件下载.

代码上....

后台控制

class IndexAction extends Action

{

public function index(){

$this->assign('title','hi.xiaohan-ixiaohan.com');

$this->display();

}

/**

* 函数:level

* 功能:level页面初始化

* 简介:

* 时间:2011年7月19日9:43:40

* 作者:by zhjp

* Enter description here ...

*/

public function level(){

$this->assign('title','hi.xiaohan-level');

$category=M('Category');

$sql="

SELECT l.id,l.fid,l.`name`,l.`level`

FROM ixh_category AS l

ORDER BY l.`level`

";

$levelInfo=$category->query($sql);

foreach ($levelInfo as $k=>$v){

$ln=strlen($v['level'])/3;

$pre='';

for($i=0; $i

$pre.='—';

}

$levelInfo[$k]['name']='|'.$pre.''.$levelInfo[$k]['name'];

}

//dump($levelInfo);

$this->assign('levelOption',$levelInfo);

$this->display();

}

/**

* 函数:addLevel

* 功能:添加分类

* 简介:

* 时间:2011年7月19日9:42:06

* 作者:by zhjp

* Enter description here ...

*/

public function addLevel(){

$category=M('Category');

$data['name']=$_REQUEST['name'];

$data['fid']=isset($_REQUEST['fid']) ? $_REQUEST['fid'] : 0;

$data['level']=$this->creatLevel($data['fid']);

if($iid=$category->add($data)){

$this->ajaxReturn('成功添加记录,ID='.$iid,'success');

}else{

$this->ajaxReturn('添加记录失败','error');

}

}

/**

* 函数:creatLevel

* 功能:构造层级字符串

* 简介:构造层级字符串的目的是为了相关层级关系的排序

* 时间:2011年7月19日9:39:07

* 作者:by zhjp

* Enter description here ...

* @param Int $fid

*/

private function creatLevel($fid){

$category=M('Category');

$sqlI="

SELECT COUNT(c.id) AS cc

FROM ixh_category AS c

WHERE c.fid=$fid

";

$resultI=$category->query($sqlI);

$count=$resultI[0]['cc'];

$count++;

$sqlL="

SELECT c.`level`

FROM ixh_category AS c

WHERE c.id=$fid

";

$resultL=$category->query($sqlL);

if($count<10){

$relevel=$resultL[0]['level'].'00'.$count;

}else if($count<100){

$relevel=$resultL[0]['level'].'0'.$count;

}else if($count<1000){

$relevel=$resultL[0]['level'].$count;

}

return $relevel;

}

}

?>

前台显示

{$title}

{$title}

View The Code

若所添加为一级分类,则不选上级别名

类别名

所属上级

请选择

{$vo.name}

当前层级关系如下图

{$vo.name}

$(document).ready(function(){

$('#add').click(function(){

var name=$('#name').val();

var fid=$('#fid').val();

if(name==''){

$('#resultTips').html('类别名不能为空');

$('#resultTips').fadeIn('7000',function(){

$('#resultTips').fadeOut('3000');

});

return ;

}

$.post('__URL__/addLevel',{'name':name,'fid':fid},function(json){

switch(json.info){

case 'success':

$('#resultTips').html(json.data);

$('#resultTips').fadeIn('7000',function(){

location.reload();

});

break;

case 'error':

$('#resultTips').html(json.data);

$('#resultTips').fadeIn('7000',function(){

$('#resultTips').fadeOut('3000');

});

break;

}

},'json');

});

});

简单脚本【可作为外部文件引入】

$(document).ready(function(){

$('#add').click(function(){

var name=$('#name').val();

var fid=$('#fid').val();

if(name==''){

$('#resultTips').html('类别名不能为空');

$('#resultTips').fadeIn('7000',function(){

$('#resultTips').fadeOut('3000');

});

return ;

}

$.post('__URL__/addLevel',{'name':name,'fid':fid},function(json){

switch(json.info){

case 'success':

$('#resultTips').html(json.data);

$('#resultTips').fadeIn('7000',function(){

location.reload();

});

break;

case 'error':

$('#resultTips').html(json.data);

$('#resultTips').fadeIn('7000',function(){

$('#resultTips').fadeOut('3000');

});

break;

}

},'json');

});

});

数据表设计

/*

Navicat MySQL Data Transfer

Source Server : localhost

Source Server Version : 50045

Source Host : localhost:3306

Source Database : db_clele

Target Server Type : MYSQL

Target Server Version : 50045

File Encoding : 65001

Date: 2011-07-18 23:35:59

*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------

-- Table structure for `clele_category`

-- ----------------------------

DROP TABLE IF EXISTS `clele_category`;

CREATE TABLE `clele_category` (

`id` int(11) NOT NULL auto_increment,

`name` varchar(255) default NULL,

`fid` int(11) default NULL,

`level` varchar(255) default NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8;

-- ----------------------------

-- Records of clele_category

-- ----------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值