php 无限极分类


Posted in PHP onMarch 27, 2008
<?php 
/*======================================================== 
类名:catalog 
功能:无限分级类 
方法: 
树形显示分类 
catalog_show($id) //参数$id 递归调用 
流程:找到父分类为0所有根分类-> 一直递归取得所有分类并显示   
添加分类 
catalog_add($uid,$name) //$uid 父id //$name 分类名   
流程:依据$uid,在此id下添加一个新子id 
删除分类 
catalog_del($uid)//参数 $uid 数要删除的分类 
修改分类 
catalog_set($id,$name) //参数 $id 要修改的分类 //参数 $name 新的分类名 
变量: 
$config //数据库信息-> host,user,pass,dbname 
$catalog_dbname //分类数据库名 
数据库: 
catalog_id //分类的自然序号 
catalog_uid //分类的父分类 
catalog_name //分类名 
catalog_path_number //亲缘树数字形式 0:1:2 
catalog_path_char //亲缘树字符形式 分类1:分类1.1:分类1.1.1 
参照文章 http://www.phpchina.com/12823/viewspace_4468.html 
========================================================*/ 
class catalog{ 
var $config; 
var $catalog_dbname; 
var $links; 
private function connect(){ 
$this->links = mysql_connect($this->config['host'],$this->config['user'],$this->config['pass']) or die("错误: 第".__LINE__."行<br>".mysql_error()); 
mysql_select_db($this->config['dbname'],$this->links); 
mysql_query("SET NAMES gb2312"); 
} 
function catalog_show($uid = 0){ 
$this->connect(); 
$sql = "Select * FROM ".$this->catalog_dbname. " 
Where catalog_uid = ". $uid ." 
orDER BY catalog_id "; 
$result = mysql_query($sql,$this->links) or die("错误: 第".__LINE__."行<br>".mysql_error()); 
if(mysql_num_rows($result) > 0){ 
while ($row = mysql_fetch_assoc($result)){   
if($this->sun_catalog($row['catalog_id'])){//判断有没有子分类 
$cata_img = "<img id = 'img".$row['catalog_id']."' src='./img/last_node.jpg' ōnclick='click_catalog(".$row['catalog_id'].")'/>"; 
}else{ 
$cata_img = "<img src='./img/sp.jpg'/>"; 
} 
$path = explode(":",$row['catalog_path_number']); 
if(count($path) > 1){ 
for($i=1;$i<count($path);$i++){ 
$path_img .= "<img src='./img/sp.jpg'/>"; 
} 
} 
echo $path_img.$cata_img; 
echo "<a class='menu' href = 'javascrīpt:send_id(".$row['catalog_id'].")'>"; 
echo $row['catalog_name']."</a><br>"; 
$path_img = ""; 
if($this->sun_catalog($row['catalog_id'])){   
$hidden_div = "style='display:none'";   
echo "<div id = 'div".$row['catalog_id']."' ".$hidden_div.">";   
$this->catalog_show($row['catalog_id']); 
echo "</div>"; 
}   
} 
}   
} 
private function sun_catalog($uid){//判断是否有子分类 
$sql = "Select * FROM ".$this->catalog_dbname. " 
Where catalog_uid = ". $uid ." 
orDER BY catalog_id "; 
$result = mysql_query($sql,$this->links) or die("错误: 第".__LINE__."行<br>".mysql_error()); 
if(mysql_num_rows($result) > 0){ 
return true; 
}else{ 
return false; 
} 
} 
function catalog_add($uid,$name){ 
//获取父id的亲缘树 
$this->connect(); 
$sql = "Select * FROM ".$this->catalog_dbname." 
Where catalog_id = '".$uid."'"; 
$result = mysql_query($sql,$this->links) 
or die("错误: 第".__LINE__."行<br>".mysql_error()); 
$row = mysql_fetch_assoc($result); 
$fid_path_number = $row['catalog_path_number'];//id的数字亲缘树 
$fid_path_char = $row['catalog_path_char'];//id的字符亲缘树 
//插入数据 先插入行->再找到最新插入的id, 在依据这个id进行修改 
$sql = "Insert INTO ".$this->catalog_dbname."(catalog_uid,catalog_name) 
VALUES(".$uid.",'".$name."')"; 
$result = mysql_query($sql,$this->links) 
or die("错误: 第".__LINE__."行<br>".mysql_error()); 
$catalog_id = mysql_insert_id();//获取自己的id 
$catalog_path_number = $fid_path_number.":".$catalog_id;//得到自己的数字亲缘数 
$catalog_path_char = $fid_path_char.":".$name;//得到自己的字符亲缘数 
$sql = "Update '".$this->catalog_dbname."' 
SET 
catalog_path_number = '".$catalog_path_number."', 
catalog_path_char = '".$catalog_path_char."' 
Where 
catalog_id = ".$catalog_id;   
mysql_query($sql,$this->links) 
or die("错误: 第".__LINE__."行<br>".mysql_error());   
} 
function catalog_del($id){ 
$this->connect(); 
$sql = "Delete FROM ".$this->catalog_dbname." 
Where catalog_id = ".$id; 
mysql_query($sql,$this->links) 
or die("错误: 第".__LINE__."行<br>".mysql_error()); 
} 
function catalog_set($id,$name){ 
$this->connect(); 
$sql = "Update ".$this->catalog_dbname." 
SET 
catalog_name = '".$name."' 
Where 
catalog_id = ".$id;   
mysql_query($sql,$this->links) 
or die("错误: 第".__LINE__."行<br>".mysql_error()); 
} 
} 
?>
PHP 相关文章推荐
php若干单维数组遍历方法的比较
Sep 20 PHP
PHP中的错误处理、异常处理机制分析
May 07 PHP
php如何调用webservice应用介绍
Nov 24 PHP
使用Sphinx对索引进行搜索
Jun 25 PHP
PHP生成唯一订单号
Jul 05 PHP
PHP数组去重比较快的实现方式
Jan 19 PHP
浅谈PHP的反射机制
Dec 15 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
php 截取中英文混合字符串的方法
May 31 PHP
Laravel中9个不经常用的小技巧汇总
Apr 16 PHP
laravel通用化的CURD的实现
Dec 13 PHP
mysql时区问题
Mar 26 #PHP
How do I change MySQL timezone?
Mar 26 #PHP
有关 PHP 和 MySQL 时区的一点总结
Mar 26 #PHP
使用 MySQL Date/Time 类型
Mar 26 #PHP
MySQL修改密码方法总结
Mar 25 #PHP
用phpmyadmin更改mysql5.0登录密码
Mar 25 #PHP
常用的php ADODB使用方法集锦
Mar 25 #PHP
You might like
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
PHP封装XML和JSON格式数据接口操作示例
2019/03/06 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
javascript Demo模态窗口
2009/12/06 Javascript
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
JavaScript中的原型prototype完全解析
2016/05/10 Javascript
基于JQuery实现图片上传预览与删除操作
2016/05/24 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
2017/05/02 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
node实现的爬虫功能示例
2018/05/04 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
部署Python的框架下的web app的详细教程
2015/04/30 Python
Python批量按比例缩小图片脚本分享
2015/05/21 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
Python合并多个Excel数据的方法
2018/07/16 Python
Python代码实现删除一个list里面重复元素的方法
2019/04/02 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
2019/06/19 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
一套软件测试笔试题
2014/07/25 面试题
检举信的格式及范文
2014/04/04 职场文书
运动会铅球比赛加油稿
2014/09/26 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android