【问题标题】:display a tree of category, subcategory by given category id按给定的类别 ID 显示类别树和子类别
【发布时间】:2013-10-27 05:20:43
【问题描述】:

虽然我正在使用 codeigniter,但如果有人可以帮助我使用简单的递归函数,这并不重要。 我有一个名为“tbl_member”的表,其中有 3 个字段member_id,parent_id,name 我想要一个tree structure,特别是member id。

例如,如果我发送member_id(10),它将显示所有 children(sub_member) member

【问题讨论】:

    标签: php codeigniter recursion treeview


    【解决方案1】:

    有帮助吗??

     function get_tree($member_id){
      $result=$this->db->get_where('table',array('member_id'=>$member_id));
      $data=$result->row_array();
        $n=$this->get_child($data['member_id']);
          foreach($n as $l){
            $data[]=$l;
           }
        print_r($data);
    }
    
    
    function get_child($parent_id){
    $result=$this->db->get_where('table',array('parent_id'=>$parent_id));
    $row = $result->result_array();
    foreach ($row as $key => $m) {
      if (is_array($m) && count($m) != NULL) {
          $me=$this->get_child($m['member_id']);
          foreach($me as $res){
                $row[$key][]=$res;
           }
        }
     }
      return $row;
    }
    

    【讨论】:

    • @user1987095 这多次访问数据库。我已经测试过了。
    • 当一个根有多个子节点时,它不起作用,因为 $data=$result->row_array();返回单行
    • 你可以使用 result_array() 和 foreach() 循环。无论如何我已经编辑了它现在你可以检查。
    【解决方案2】:
    function getMemberTree($id) {
    $q =  $this->db->get_where('tbl_member', array('parent_id' => $id));
    if($q->num_rows() > 0) {
        foreach($q->result() as $row) {
            $first_level[] = $row;
        }
        foreach($first_level as $r) {
            $member_id = $r->member_id;
            $m = $this->db->get_where('tbl_member', array('parent_id' => $member_id));
            if($m->num_rows() > 0) {
                foreach($m->result() as $mrow) {
                    $second_level[] = $mrow;
                }
            }
        }
        $data[] = $first_level;
        $data[] = $second_level;
    
        return $data; 
    

    }

    【讨论】:

      【解决方案3】:

      这些解决方案需要很多很多的数据库命中。考虑一个层次表结构:

      http://codebyjeff.com/blog/2012/10/nested-data-with-mahana-hierarchy-library

      【讨论】:

      • jmadsen,"Nabin Kunwar" 答案必须多次访问数据库,因为它是一个 n 级树。
      • 你可以用我展示的另一种技术构建一个 n 级树,访问 db 一次
      • 都说明了;它只是 Codeigniter 代码 - 您可以像其他任何数据一样显示。
      猜你喜欢
      • 2012-10-14
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多