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 相关文章推荐
建立文件交换功能的脚本(三)
Oct 09 PHP
使用NetBeans + Xdebug调试PHP程序的方法
Apr 12 PHP
php中利用explode函数分割字符串到数组
Feb 08 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
Jun 19 PHP
使用PHP进行微信公众平台开发的示例
Aug 21 PHP
Yii2增加验证码步骤详解
Apr 25 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
PHP实现APP微信支付的实例讲解
Feb 10 PHP
基于laravel-admin 后台 列表标签背景的使用方法
Oct 03 PHP
在 PHP 和 Laravel 中使用 Traits的方法
Nov 13 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
Mar 02 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
Mar 09 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打开和关闭文件操作函数总结
2014/11/18 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
PHP利用二叉堆实现TopK-算法的方法详解
2017/04/24 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
JavaScript中的集合及效率
2010/01/08 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
javascript手风琴下拉菜单实现代码
2015/11/12 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
Vue项目查看当前使用的elementUI版本的方法
2018/09/27 Javascript
JavaScript创建防篡改对象的方法分析
2018/12/30 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
Python中的异常处理简明介绍
2015/04/13 Python
深入解析Python中的urllib2模块
2015/11/13 Python
python多线程方式执行多个bat代码
2016/06/07 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
Flask-Mail用法实例分析
2018/07/21 Python
python判断完全平方数的方法
2018/11/13 Python
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
python pygame实现五子棋小游戏
2020/10/26 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
python学生信息管理系统实现代码
2019/12/17 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
如何利用Python动态模拟太阳系运转
2020/09/04 Python
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
中学生校园广播稿
2014/01/16 职场文书
化学教师教学反思
2014/01/17 职场文书
秋季运动会活动方案
2014/02/05 职场文书
python基础之错误和异常处理
2021/10/24 Python
springboot实现string转json json里面带数组
2022/06/16 Java/Android