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统计时间和内存使用情况示例分享
Mar 13 PHP
php实现与erlang的二进制通讯实例解析
Jul 23 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
Sep 27 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 PHP
页面利用渐进式JPEG来提升用户体验度
Dec 01 PHP
php使用iconv中文截断问题的解决方法
Feb 11 PHP
php实现的农历算法实例
Aug 11 PHP
PHP中配置IIS7实现基本身份验证的方法
Sep 24 PHP
如何写php守护进程(Daemon)
Dec 30 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
php简单统计在线人数的方法
May 10 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 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
phpfans留言版用到的install.php
2007/01/04 PHP
PHP 递归效率分析
2009/11/24 PHP
关于php连接mssql:pdo odbc sql server
2011/07/20 PHP
thinkPHP的Html模板标签使用方法
2012/11/13 PHP
9个实用的PHP代码片段分享
2015/01/22 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
PHP实现递归的三种方法
2020/07/04 PHP
jquery异步请求实例代码
2011/06/21 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
2015/03/26 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
对Vue.js之事件的绑定(v-on: 或者 @ )详解
2018/09/15 Javascript
[02:47]DOTA2英雄基础教程 野性怒吼兽王
2013/12/05 DOTA
python网络编程学习笔记(六):Web客户端访问
2014/06/09 Python
python删除过期文件的方法
2015/05/29 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
Python中交换两个元素的实现方法
2018/06/29 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
对Python _取log的几种方式小结
2019/07/25 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
Python中格式化字符串的四种实现
2020/05/26 Python
中专生自我鉴定书范文
2013/12/28 职场文书
2014年学习雷锋活动总结
2014/03/01 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
初三新学期计划书
2014/05/03 职场文书
纪检监察建议书
2014/05/19 职场文书
合作意向书
2014/07/30 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
工程安全生产协议书
2014/11/21 职场文书