> php无限极分类
CODE=PHP]
至于添加删除之类的功能我就不多写了!仔细看看就知道这么用了.
难的是显示方面
希望高手扩展一下!
QUOTE:
这是类
<?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 ========================================================*/ 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__."行 ".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__."行 ".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> "; path_img = ""; if(this->sun_catalog(row['catalog_id'])){ hidden_div = " 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__."行 ".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__."行 ".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__."行 ".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__."行 ".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__."行 ".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__."行 ".mysql_error()); } } ?> [/CODE] |