2015-02-23 79 views
-2

我有一个类别表PHP的递归函数不能正常工作

(ID = 1,名称=手工制作的,父= 0)

(ID = 2,名称=工厂制,父= 0)

(ID = 3,名字=椅子,父= 1)

(ID = 4,名称= tabels,父= 1)

(ID = 5,名字=旧椅子,父= 3)

在如果访问者点击类别旧椅子菜单,会去页

products.php?CATEGORY_ID = 5

然后在这个页面,我需要知道什么是主CATEGORY_ID,这应该是手与CATEGORY_ID MADE = 1

所以在这个页面我想说

if isset($_REQUEST['category_id']){ 
do the function till find the main parent, 
$mainparentid = main parent category_id 
}else { $mainparentid = ''; 
} echo $mainparentid; 

这是我的PHP代码

if (isset($_REQUEST['category_id'])) { 

    function getParent($id) { 
     global $connection; 
     $query_rsCategoryId = "SELECT * FROM categories 
     WHERE category_id = '".$_REQUEST['category_id']."'"; 
     $rsCategoryId = mysql_query($query_rsCategoryId, $connection); 
     $row_rsCategoryId = mysql_fetch_assoc($rsCategoryId); 
     $parent = $row_rsCategoryId['category_parent']; 
     if (mysql_num_rows($rsCategoryId) < 1) { 
     // Error handling, entry with id $id not found 
     return null; 
     } 
     if ($parent == 0) { 
     return $id; 
     } else { 
     return getParent($parent); 
     } 
    } 
$mainparentid = getParent($id); 

}else { 

    $mainparentid ='none'; 
} 
echo $mainparentid ; 

回答

0

您总是从$ _REQUEST输入类别的ID。更改行:

WHERE category_id = '".$_REQUEST['category_id']."'"; 

到:

WHERE category_id = '".$id."'"; 
0

您正在使用父ID从请求,而不是通过函数参数给出

// notice $id instead of $_REQUEST['category_id'] 
    $query_rsCategoryId = "SELECT * FROM categories WHERE category_id = '{$id}'";