如:
classID classFID className classCount
1 0 中国 0
2 1 浙江 0
3 1 江苏 0
4 2 杭州 0
5 4 西湖区 0
若
findFather('4','0') 显示 => 杭州
findFather('4','1') 显示 => 浙江
findFather('4','2') 显示 => 中国
findFather('4','3') 显示 => 中国 -> 浙江 -> 杭州
代码如下:
//
========== findFather函数 START ==========
// 功能:无限级分类之找出父层的相关数据
// 参数:$classID,当前子层的编号
// $type,0找自己 1找父亲 2找祖先 3找家谱
// 字段:classID主键,自生成 classFID父编号
// className分类名称 classCount分类统计
function findFather( $classID , $type )
{
global $db , $flist , $forefather ;
define ( " _STR_CUT " , " -> " );
$db -> query( " set names 'utf8' " );
$sql = ' select * from tbl_name where classID = " ' . $classID . ' " ' ;
$result = $db -> query( $sql );
$recordCount = $result -> num_rows;
if ( $recordCount != 0 )
{
// 取值
$row = $result -> fetch_assoc();
$classFID = $row [ ' classFID ' ];
$classID = $row [ ' classID ' ];
$className = $row [ ' className ' ];
// 若找到祖先,即classFID为0,则将函数状态设为0
if ( $classFID == ' 0 ' ) $type = ' 0 ' ;
}
if ( $type == ' 1 ' ) // 找父亲
{
$type = ' 0 ' ; // 第二次开始函数状态为0,即循环2次
findFather( $classFID , $type );
}
else if ( $classFID != ' 0 ' AND $type == ' 2 ' ) // 找祖先,状态type为2,祖先classFID不为0未找到
{
findFather( $classFID , $type );
}
else if ( $type == ' 3 ' )
{
findFather( $classFID , $type );
$flist = $flist . _STR_CUT . $className ; // 生成家谱
}
else if ( $type == ' 0 ' )
{
$forefather = $className ;
}
$result = $forefather . $flist ;
return $result ;
}
// ========== findFather函数 END ==========
// 功能:无限级分类之找出父层的相关数据
// 参数:$classID,当前子层的编号
// $type,0找自己 1找父亲 2找祖先 3找家谱
// 字段:classID主键,自生成 classFID父编号
// className分类名称 classCount分类统计
function findFather( $classID , $type )
{
global $db , $flist , $forefather ;
define ( " _STR_CUT " , " -> " );
$db -> query( " set names 'utf8' " );
$sql = ' select * from tbl_name where classID = " ' . $classID . ' " ' ;
$result = $db -> query( $sql );
$recordCount = $result -> num_rows;
if ( $recordCount != 0 )
{
// 取值
$row = $result -> fetch_assoc();
$classFID = $row [ ' classFID ' ];
$classID = $row [ ' classID ' ];
$className = $row [ ' className ' ];
// 若找到祖先,即classFID为0,则将函数状态设为0
if ( $classFID == ' 0 ' ) $type = ' 0 ' ;
}
if ( $type == ' 1 ' ) // 找父亲
{
$type = ' 0 ' ; // 第二次开始函数状态为0,即循环2次
findFather( $classFID , $type );
}
else if ( $classFID != ' 0 ' AND $type == ' 2 ' ) // 找祖先,状态type为2,祖先classFID不为0未找到
{
findFather( $classFID , $type );
}
else if ( $type == ' 3 ' )
{
findFather( $classFID , $type );
$flist = $flist . _STR_CUT . $className ; // 生成家谱
}
else if ( $type == ' 0 ' )
{
$forefather = $className ;
}
$result = $forefather . $flist ;
return $result ;
}
// ========== findFather函数 END ==========