关于无限分类的调用问题!

来源:互联网 发布:淘宝客进入等级 编辑:程序博客网 时间:2024/04/30 07:53

数据表test是这么建的,一个id ,pid,name。

方法一:调用此ID下所有的子类。

function tree($pid){            $sql= "SELECT id FROM test WHERE pid =".$pid;            $res = mysql_query($sql);            $arr = array();             if($res && mysql_affected_rows()){//如果有子类                 while($rows=mysql_fetch_assoc($res)){ //循环记录集                     $rows['list'] = tree($rows['id']); //调用函数,传入参数,继续查询下级                     $arr[] = $rows; //组合数组                 }                 return $arr;             }         }
此方法返回的是一个多维数组,有时候会需要转化成字符串。也提供了方法:

//cyclefunction cycle($arr){static $idstr='';foreach ($arr as $v){$id .= $v['id'];if( is_array($v['list']) ){cycle($arr);}}return $idstr;}
向上取name

//取出栏目最顶层        function listtree($pid){                $fenge =",";static $name;                $sql= "SELECT name,pid FROM test WHERE id =".$pid;                $res = mysql_query($sql);                if(mysql_num_rows($res)){                    list($name,$pid) = mysql_fetch_row($res);                    if($pid!=0){                            listtree($pid);                    }                }                return  $name;}
向上取出所有name

//        function listtrees($pid){                $fenge =",";static $names;                $sql= "SELECT name,pid FROM test WHERE id =".$pid;                $res = mysql_query($sql);                if(mysql_num_rows($res)){                    list($name,$pid) = mysql_fetch_row($res);                    $names .= $name.$feng;                    if($pid!=0){                            listtree($pid);                    }                }                return  $name;}


遍历所有,下拉框的方式列出来

//根目录选择框样式function menutree($selectid='',$pid = 0,$first=1,$fenge=''){            static $str='';            if($first == 1){$str .= "<select name='type'>";$str .= '<option value="">--请选择--</option>';}$sql= "SELECT id,name,pid FROM test WHERE pid =".$pid;$res = mysql_query($sql);if(mysql_num_rows($res)){$fenge .=' |--';while(list($id,$name,$pid)= mysql_fetch_row($res)){  if(!empty($selectid)){if($selectid == $id){$selected = 'selected';}else{$selected = '';}}$str .= "<option value = {$id} {$selected} >{$fenge}{$name}</option>";menutree($selectid,$id,0,$fenge);}}if($first == 1){$str .= '</select>';}                return $str;}



0 0
原创粉丝点击