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 相关文章推荐
967 个函式
Oct 09 PHP
基于mysql的论坛(5)
Oct 09 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
Jun 22 PHP
php使用GeoIP库实例
Jun 27 PHP
PHP向socket服务器收发数据的方法
Jan 24 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
Mar 24 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 PHP
PHP编程中的Session阻塞问题与解决方法分析
Aug 07 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
May 31 PHP
redis+php实现微博(一)注册与登录功能详解
Sep 23 PHP
thinkPHP事务操作简单案例分析
Oct 17 PHP
PHP+Mysql分布式事务与解决方案深入理解
Feb 27 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的五种设计模式
2012/09/05 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
2015/03/03 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
Javascript Tab 导航插件 (23个)
2009/06/11 Javascript
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
JavaScript Event学习第十章 一些可替换的事件对
2010/02/10 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
2011/10/13 Javascript
面向对象的Javascript之一(初识Javascript)
2012/01/20 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
微信小程序登录数据解密及状态维持实例详解
2019/05/06 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
python+django快速实现文件上传
2016/10/24 Python
Python PyQt5标准对话框用法示例
2017/08/23 Python
python使用tensorflow保存、加载和使用模型的方法
2018/01/31 Python
python 常用的基础函数
2018/07/10 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
详解pandas安装若干异常及解决方案总结
2019/01/10 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
十佳美德少年事迹材料
2014/02/05 职场文书
对公司合理化的建议书
2014/03/12 职场文书
检举信的格式及范文
2014/04/04 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
关于读书的演讲稿400字
2014/08/27 职场文书
2014最新离职证明范本
2014/09/12 职场文书
2014年店长工作总结
2014/11/17 职场文书
2016年教师节慰问信
2015/12/01 职场文书
muduo TcpServer模块源码分析
2022/04/26 Redis