条件,数据库里分类是按id,fid(父ID)实现多级分类的!
使用方法:
- $sql="XXXXXXXXXX"; //sql语句
- $res=$db->Select($sql); //执行sql
- $list=array();
- treeList(treeGet($res),$list); /生成树
- print_r($res); //打印出来看看!
代码如下:
- /**
- * 选择SQL涵数
- *
- * @access public
- * @param Array $field 字段信息,支持涵数
- * @param Array $table 数据库表
- * @param Array $where 条件
- * @return SQL SQL语句
- */
- functiontreeGet($data)
- {
- $tmptree=null;
- $tree=$data;
- returntreeAddNodeToTree($tmptree,treegetbyuid($tree,0,@$field),$tree);
- }
- /**
- *插入SQL涵数
- *
- * @access public
- * @param Array $fieldResult 字段信息,支持涵数
- * @param Array $table 数据库表
- * @return SQL SQL语句
- */
- functiontreeAddNodeToTree($Node,$miniTree,&$source)
- {
- if(is_array($miniTree)) {
- <a href="/tags.php/foreach/" target="_blank">foreach</a>($miniTreeas$k=>$v)
- {
- if(!count($miniTree[$k]['child']=treeAddNodeToTree($miniTree[$k],treegetbyuid($source,@$v['id']),$source)))
- {
- unset($miniTree[$k]['child']);
- $miniTree[$k]['leaf']=true;//设置叶结点
- }
- }
- return$Node['child']=$miniTree;
- }
- }
- functiontreegetbyuid(&$stree,$uid)
- {
- $dtree=array();
- if(is_array($stree)){
- foreach($streeas$k=>$v)
- {
- if($v['fid']==$uid)
- {
- $mytmp=array();
- $mytmp=$v;
- unset($stree[$k]);
- array_push($dtree,$mytmp);
- $mytmp=null;
- }
- }
- }
- return$dtree;
- }
- /**
- *更新SQL涵数
- *
- * @access public
- * @param Array $fieldResult 字段信息,支持涵数
- * @param Array $table 数据库表
- * @param Array $where 条件
- * @return SQL SQL语句
- */
- functiontreeMakeDeep($deep)
- {
- $returnValue="";
- for(;$deep;$deep--)
- {
- $returnValue.="┃";
- }
- return$returnValue."┣";
- }
- functiontreeList($treeData,&$List)
- {
- static$deep=0;
- if(is_array($treeData))
- {
- foreach($treeDataas$k=>$v)
- {
- $v['deepValue']=treeMakeDeep($deep);
- $v['deep']=$deep;
- $t=$v;
- unset($t['child']);
- array_push($List,$t);
- if($v['child'])
- {
- ++$deep;
- $optionsNode.=treeList($v['child'],$List);
- $deep--;
- }
- }
- if($lastV=array_pop($List))
- {
- $lastV['deepValue']=str_replace('┣','┗',$lastV['deepValue']);
- array_push($List,$lastV);
- }
- }
- }
- functiontreeSelect($tree,$id,$options="child")
- {
- switch(strtolower($options))
- {
- case"child":
- $tmpTree=array();
- $deep=-1;
- foreach($treeas$k=>$v)
- {
- if($id==$v['id'])
- {
- array_push($tmpTree,$v);
- $deep=$v['deep'];
- }elseif($deep!=-1)
- {
- if($v['deep']<=$deep)
- {
- break;
- }else
- {
- array_push($tmpTree,$v);
- }
- }
- }
- break;
- case"remove":
- default:
- $tmpTree=array();
- $deep=-1;
- foreach($treeas$k=>$v)
- {
- if($id==$v['id'])
- {
- $deep=$v['deep'];
- continue;
- }elseif($deep!=-1)
- {
- if($v['deep']<=$deep)
- {
- array_push($tmpTree,$v);
- $deep=-1;
- }
- continue;
- }
- array_push($tmpTree,$v);
- }
- }
- return$tmpTree;
- }
新闻热点
疑难解答