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 代码优化的42条建议 推荐
Sep 25 PHP
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
PHP远程采集图片详细教程
Jul 01 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 PHP
php+ajax实现无刷新分页
Nov 18 PHP
WordPress网站性能优化指南
Nov 18 PHP
深入理解PHP JSON数组与对象
Jul 19 PHP
PHP封装函数实现生成随机的字符串验证码
Jan 24 PHP
PHP性能测试工具xhprof安装与使用方法详解
Apr 29 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 PHP
Yii redis集合的基本使用教程
Jun 14 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
Sep 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
php编写的一个E-mail验证类
2015/03/25 PHP
php按单词截取字符串的方法
2015/04/07 PHP
laravel框架实现敏感词汇过滤功能示例
2020/02/15 PHP
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
JavaScript 程序编码规范
2010/11/23 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
Vue.js每天必学之Class与样式绑定
2016/09/05 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
2016/11/25 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
浅谈React高阶组件
2018/03/28 Javascript
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
layui switch 开关监听 弹出确定状态转换的例子
2019/09/21 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
详解Python下Flask-ApScheduler快速指南
2018/11/04 Python
python模块常用用法实例详解
2019/10/17 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
欧洲最大的品牌水上运动服装和设备在线零售商:Wuituit Outlet
2018/05/05 全球购物
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
英文版餐饮业求职信
2013/10/18 职场文书
教师自我鉴定范文
2013/11/10 职场文书
日语系毕业生推荐信
2013/11/11 职场文书
幼儿园教师请假制度
2014/01/16 职场文书
联谊活动策划书
2014/01/26 职场文书
信息学院毕业生自荐信范文
2014/03/04 职场文书
工作目标责任书
2014/07/23 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
大学生活委员竞选稿
2015/11/21 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python