Welcome

首页 / 网页编程 / PHP / php 无限极分类

复制代码 代码如下:
<?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());
}
}
?>