2014-07-18 76 views
0

我正在创建自己的cms。现在我想显示哪一个类别有父母,但我不知道如何,所以请帮助我。检查类别是否具有父项

我的类别表

idkategori | namakategori | parentid 
     1   Programming   0 
     2   PHP    1 

或者我需要为我的类别关系表?

到目前为止我的控制器。

function tampilmenu() 
{ 
      $sql    = "select * from fc_kategori"; 
      $data['kategori'] = $this->bymodel->tampildata($sql); 
      $sql1    = "select parentid from fc_kategori"; 
      $data['parent'] = $this->bymodel->tampildata($sql1); 
          $id=array(); 
       foreach ($data['parent'] as $paren) 
      { 
       $id[]=$paren->parentid; 
      } 
      foreach ($data['kategori'] as $cat) 
      if(in_array($cat->parentid,$id)) 
      { 
         $have ='Yes'; 
      } 
      else 
      { 
         $have ='No'; 
      } 
      echo $cat->idkategori.$have; 
            } 

} 

我的模型

function tampildata ($sql) 
{ 
    $query = $this->db->query($sql); 
    return $query->result(); 
} 

大家不要笑我。

+0

你是什么'的类别之一具有parent'是什么意思?简要解释一下。 –

+0

你的db结构看起来不错......如果'parentid = 0',那么category是一个父类,如果'parentid> 0'那么'parentid'就是父类别的id。 – Dan

回答

0

请遵循:

1)由于您使用的是MVC framework,从来不写控制器内部查询(查询应始终写在模型)。
2)切勿使用原始查询,因为CI为您提供了所谓的Active Record
3)也决不会通过direct queries任何地方你可能会用任何语言编码。总是传递数据并使其执行计算和查询过程。
4)请记住,在仅用于数据库的功能CI ModelsViews仅用于你的HTML标记和Controllers作为模型和视图之间的调停人。


您的代码:

控制器 -

public function tampilmenu() 
{ 
    $categories = $this->bymodel->get_category_having_parent(); 

    echo "<pre>"; print_r($categories); 

    // this will return object having all categories that are parents 
} 

型号 -

public function get_category_having_parent() 
{ 
    $parent_ids = array(); 
    $ps = $this->get("parentid"); 
    foreach($ps as $p) 
    { 
     $parent_ids[] = $p->parentid; 
    } 

    $this->db->where_in("id", $parent_ids); 
    $query = $this->db->get("fc_kategori"); 
    return $query->result(); 
} 

public function get($column="*") 
{ 
    $this->db->select($column); 
    $query = $this->db->get("fc_kategori"); 
    return $query->result(); 
} 
+0

谢谢,它有效的人。 Sory为我的坏英语。所以我不能使用我的控制器?因为我从someone.by学习它的方式echo $ cat-> idkategori。$ have;仅用于测试 – Bossby

+0

不适用于数据库工作。如果有用,请将答案标记为“已接受”。 –