2012-02-17 110 views
0

我有表faq_categories具有以下字段我怎樣才能使循環在codeigniter循環內?

CREATE TABLE IF NOT EXISTS `faq_categories` (
    `catid` int(11) NOT NULL AUTO_INCREMENT, 
    `categoryname` varchar(37) NOT NULL, 
    `parentid` int(11) DEFAULT NULL, 
    `description` text NOT NULL, 
    `metatags` text NOT NULL, 
    `sorder` int(11) NOT NULL, 
    `visible` tinyint(4) NOT NULL, 
    `categoryphoto` varchar(255) NOT NULL, 
    PRIMARY KEY (`catid`), 
    KEY `parentid_fk` (`parentid`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=52 ; 

在我的PHP代碼中,我有以下代碼:

$query="SELECT * FROM categories"; 
    $result=mysql_query($query); 
    $num=mysql_num_rows($result); 
    $i=0; 
    while ($i < $num) { 
     $id=mysql_result($result,$i,"id"); 
     $name=mysql_result($result,$i,"name"); 
     $parentid=mysql_result($result,$i,"parentid"); 
     $categoryphoto=mysql_result($result,$i,"categoryphoto"); 
     $sorder=mysql_result($result,$i,"sorder"); 
     $visible=mysql_result($result,$i,"visible"); 


echo $id; 

echo $name; 

// THIS IS WHAT I DON'T KNOW HOW TO DO IN CODEIGNITER 
// HOW TO GET THE CATEGORYNAME ON BASE ON PARENTID 

if ($parentid) { 

         //echo $parentid; 
         $query1="SELECT name as parentname FROM categories WHERE id = ".$parentid; 
         echo mysql_result(mysql_query($query1),0,"parentname"); 

         } else { 
          echo "Root Category"; 
         } 

我怎樣才能做到這一點笨?如果可能,我想避免加入。

回答

0

第一:我認爲你可以檢查Database class 第二:爲什麼你不想使用連接?如果你恨它,也許你可以使用FROM table1,table2 :)恕我直言,較小的查詢是更好:)

編輯 安裝一個SQL GUI(例如phpMyAdminadminer ...),並嘗試一些查詢!類似的一個例子你需要什麼:

SELECT *, catjoin.categoryname AS parentname 
FROM categories 
JOIN categories AS catjoin ON (catjoin.catid=categories.parentid) 

您可以IFNULL延長catjoin.categoryname來回報ROOT category

+0

那麼,我想避免連接的原因是我對sql語句不太好。另一個原因是我試圖使用通用模型,例如我的模型選擇記錄如下所示: – Zoran 2012-02-17 12:30:59

+0

[code] public function selectOneRecord($ selectWhat = array()) { $ data = array(); $ rid = $ selectWhat ['rid']; $ tname = $ selectWhat ['tname']; $ fname = $ selectWhat ['fname']; $ this-> db-> where($ fname,$ rid); $ query = $ this-> db-> get($ tname,1); if($ query-> num_rows()> 0) { $ data = $ query-> row_array(); } $ query-> free_result(); 返回$ data; } // [code] – Zoran 2012-02-17 12:35:11

+0

但是如果你可以幫我加入,我會試試看。感謝回覆我的問題,我非常感謝 – Zoran 2012-02-17 12:36:55