2014-07-18 75 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

不適用於數據庫工作。如果有用,請將答案標記爲「已接受」。 –