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 相关文章推荐
NO3第三帝国留言簿制作过程
Oct 09 PHP
用PHP进行MySQL删除记录操作代码
Jun 07 PHP
linux php mysql数据库备份实现代码
Mar 10 PHP
php 多个submit提交表单 处理方法
Jul 07 PHP
收藏的PHP常用函数 推荐收藏保存
Feb 21 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
Apr 28 PHP
九个你必须知道而且又很好用的php函数和特点
Aug 08 PHP
Yii2 加载css、js 载静态资源的方法
Mar 10 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 PHP
Laravel 框架路由原理与路由访问实例分析
Apr 14 PHP
PHP使用Redis队列执行定时任务实例讲解
Mar 24 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 网页过期时间的控制代码
2009/06/29 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
JSON JQUERY模板实现说明
2010/07/03 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
2013/03/20 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
2016/04/26 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
2016/08/24 Javascript
有关文件上传 非ajax提交 得到后台数据问题
2016/10/12 Javascript
js基础之DOM中元素对象的属性方法详解
2016/10/28 Javascript
Vue实现导出excel表格功能
2018/03/30 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
vue通过video.js解决m3u8视频播放格式的方法
2019/07/30 Javascript
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
Python 文件管理实例详解
2015/11/10 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
关于pymysql模块的使用以及代码详解
2019/09/01 Python
如何在 Django 模板中输出 &quot;{{&quot;
2020/01/24 Python
浅析matlab中imadjust函数
2020/02/27 Python
python3.7调试的实例方法
2020/07/21 Python
Python如何给你的程序做性能测试
2020/07/29 Python
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
本科生学习总结的自我评价
2013/10/02 职场文书
小学生检讨书大全
2014/02/06 职场文书
开业主持词
2014/03/21 职场文书
艺术节开幕词
2015/01/28 职场文书
2019 入党申请书范文
2019/07/10 职场文书
css height属性中的calc方法详解
2021/06/03 HTML / CSS
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android
mysql left join快速转inner join的过程
2021/06/30 MySQL
Golang并发操作中常见的读写锁详析
2021/08/30 Golang