/*========================================================
类名: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__."行
".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 = "
";
}else{
$cata_img = "
";
}
$path = explode(":",$row['catalog_path_number']);
if(count($path) > 1){
for($i=1;$i
$path_img .= "";
}
}
echo $path_img.$cata_img;
echo "
";
$path_img = "";
if($this->sun_catalog($row['catalog_id'])){
$hidden_div = "style='display:none'";
echo "";
$this->catalog_show($row['catalog_id']);
echo "
";
}
}
}
}
private function sun_catalog($uid){//サブカテゴリがあるかどうかを判断します
$sql = "Select * FROM ".$this->catalog_dbname. "
Where category_uid = " . $uid ."
orDER BY category_id ";
$result = mysql_query($sql,$this->links) or die("エラー: いいえ。".__LINE__." line
".mysql_error() ) ;
if(mysql_num_rows($result) > 0){
return true;
}
}
function category_add($uid,$name){
//親 ID
$this->connect();
$sql = "Select * FROM ".$this->catalog_dbname."
Where category_id = '".$uid."'"; ($sql ,$this->links)
または die("エラー: 行 ".__LINE__."
".mysql_error());
$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;//独自のキャラクター アフィニティを取得しますnumber
$sql = "更新 '".$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()); {
$ this->connect();
$sql = "「.$this->catalog_dbname.」から削除します。"
Where category_id = ".$id;
or die ("エラー: 行 ".__LINE__."
".mysql_error())
}
function category_set($id,$name){
$this->connect(); = " ".$this->catalog_dbname." を更新します。
SET
catalog_name = '".$name."'
Where
catalog_id = ".$id;
mysql_query($sql,$this->links)
あるいは死ぬ ("エラー: 行 ".__LINE__."
".mysql_error());
http://www.bkjia.com/PHPjc/318618.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/318618.html
技術記事 次のようにコードをコピーします: ?php /*======================================== ==== =============== クラス名:catalog 機能:無制限階層クラスメソッド:ツリー表示分類catalog_show($id)//パラメータ...