php城市無限分類
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;
}