您的位置:首页 > 编程语言 > PHP开发

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

2011-07-19 11:49 696 查看

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


附件下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: