我有一个类别表
(id=1,name=手工制作,parent=0)
(id=2,name=工厂制造,parent=0)
(id=3,name=椅子,parent=1)
(id=4,name=tabels,parent=1)
(id=5,name=旧椅子,parent=3)
在菜单上,如果访问者点击"旧椅子"类别,将转到页面
products.php?category_id=5
那么在这个页面上,我需要知道什么是主类别id,它应该是手工制作的,类别id=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 ;
您总是从$_REQUEST输入类别的ID。变更行:
WHERE category_id = '".$_REQUEST['category_id']."'";
至:
WHERE category_id = '".$id."'";
您使用的是来自请求的父id,而不是通过函数参数给定的id
// notice $id instead of $_REQUEST['category_id']
$query_rsCategoryId = "SELECT * FROM categories WHERE category_id = '{$id}'";