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

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

一,前言

很多知识用到时总是不太把握,往往都得要上网找资料查一番。
将一些实用的资料收藏在这里,作备忘之用。本贴随时会更新。

皆为学习。

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

代码上....

后台控制

<?php

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<$ln; $i++){
				$pre.='—';
			}
			$levelInfo[$k]['name']='<span style="color:red;">|'.$pre.'</span>'.$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;
	}
}
?>

前台显示

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>{$title}</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<h3>{$title}</h3>
<a style="float:right;font-size:18px; color:red;" href="__URL__/index">View The Code</a>
<div style="width:830px;margin:0 auto;margin-top:100px;">
<p>若所添加为一级分类,则不选上级别名</p>
<h3>
类别名
<input id="name" type="text"/>
所属上级
<select id="fid">
  <option value="0">请选择</option>
  <volist name="levelOption" id="vo">
  <option value="{$vo.id}">{$vo.name}</option>
  </volist>
</select>
<input type="button" id="add" value="Add Category">
<span id="resultTips" style="display:none; color:blue;"></span>
</h3>
</div>
<div style="width:660px;height:;margin:0 auto;margin-top:36px;color:gray;">
  <p>当前层级关系如下图</p>
  <volist name="levelOption" id="vo">
  {$vo.name}<br>
  </volist>
</div>
</body>
<script type="text/javascript">
$(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');
	});
});

</script>
</html>


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

$(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
-- ----------------------------


附件下载



  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值