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 相关文章推荐
粗略计算在线时间,bug:ip相同
Dec 09 PHP
PHP 单引号与双引号的区别
Nov 24 PHP
php 文件上传代码(限制jpg文件)
Jan 05 PHP
PHP读取XML值的代码(推荐)
Jan 01 PHP
mac下使用brew配置环境的步骤分享
May 23 PHP
php图片加中文水印实现代码分享
Oct 31 PHP
浅析PHP原理之变量(Variables inside PHP)
Aug 09 PHP
ThinkPHP3.1新特性之查询条件预处理简介
Jun 19 PHP
PHP实现自动识别Restful API的返回内容类型
Feb 07 PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 PHP
PHP+ajax分页实例简析
Dec 07 PHP
php开发时容易忘记的一些技术细节
Feb 03 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
在PWS上安装PHP4.0正式版
2006/10/09 PHP
简单的PHP缓存设计实现代码
2011/09/30 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
遍历jquery对象的代码分享
2011/11/02 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
JavaScript的继承实现小结
2017/05/07 Javascript
使用express来代理服务的方法
2019/06/21 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
python中lambda与def用法对比实例分析
2015/04/30 Python
Python 功能和特点(新手必学)
2015/12/30 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
2020/04/09 Python
Boda Skins皮衣官网:奢侈皮夹克,全球配送
2016/12/15 全球购物
高一家长会邀请函
2014/01/12 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
转让协议书范本
2014/04/15 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书
消防演习通知
2015/04/25 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers