/*
 * 根据子类ID获取根分类
 */
function get_root_class($classId) {
global $db, $lot_array;
$class = $db->fetch_first("SELECT pid, name FROM new_infor_class WHERE id = $classId");
if ($class['pid'] != 0) {
get_root_class($class['pid']);
} else {
return $class['name'];
}
}
分类是按照无限分类设置,这样返回的就是$classId的分类名,实在不明白呀!哪位大哥救救我!

解决方案 »

  1.   

    print_r($class);  输出什么?
      

  2.   

    检查一下,是不是 $classId 为空?
      

  3.   


    /*
     * 根据子类ID获取根分类
     */
    function get_root_class($classId) {
      global $db, $lot_array;
      $class = $db->fetch_first("SELECT pid, name FROM new_infor_class WHERE id = $classId");
      if ($class['pid'] != 0) {
        get_root_class($class['pid']);
      } else {
       return $class['id'];
     }
    }
      

  4.   

    $class = $db->fetch_first("SELECT pid, name FROM new_infor_class WHERE id = $classId");输出$class就知道了。
      

  5.   


    /*
     * 根据子类ID获取根分类标识
     */
    function get_root_class($classId, &$name = '') {
    global $db, $lot_array;
    $class = $db->fetch_first("SELECT pid, name FROM new_infor_class WHERE id = $classId");
    if ($class['pid'] != 0) {
    $name = $class['name'];
    get_root_class($class['pid'], $name);
    } else {
    $name = $class['name'];
    }
    return $name;
    }
    我这样可以取到,其实你们上面说的我都试了,用递归怎么就要用&引用才能取到呢!
      

  6.   

    在你主贴的代码中
    function get_root_class($classId) {
      global $db, $lot_array;
      $class = $db->fetch_first("SELECT pid, name FROM new_infor_class WHERE id =     $classId");
      if ($class['pid'] != 0) {
        get_root_class($class['pid']);
      } else {
        return $class['name'];
      }
    }没有承接返回值应写作 return get_root_class($class['pid']);
      

  7.   

    本帖最后由 xuzuning 于 2012-04-27 15:19:10 编辑
      

  8.   

    好的,就搭一个测试环境
    --
    -- 表的结构 `tree`
    --CREATE TABLE IF NOT EXISTS `tree` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `pid` int(11) DEFAULT NULL,
      `name` varchar(10) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;--
    -- 转存表中的数据 `tree`
    --INSERT INTO `tree` (`id`, `pid`, `name`) VALUES
    (1, 0, 'a'),
    (2, 1, 'b'),
    (3, 2, 'c'),
    (4, 3, 'd');
    mysql_connect();
    mysql_select_db('test');echo get_root_class(3);//out afunction get_root_class($classId) {
      $rs = mysql_query("SELECT pid, name FROM tree WHERE id = $classId");
      $class = mysql_fetch_assoc($rs);
      if($class['pid'] != 0) {
        return get_root_class($class['pid']);
      } else {
        return $class['name'];
      }
    }