2012-02-17 9 views
0

私は、次のコードを持って、次のフィールドに私のPHPコードで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 ; 

とテーブルfaq_categoriesを持っている:

$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"; 
         } 

私はCodeIgniterの中でこれを行うことができますどのように?可能であれば、私は結合を避けたいと思います。

答えて

0

最初に:あなたがチェックできると思いますDatabase class 2番目:なぜジョインを使いたくないですか?あなたは多分それを嫌う場合は、FROM table1,table2 :)私見低いクエリを使用することができ、より良いです:)

EDIT は(例えばphpMyAdminadminer ...)SQL-GUIをインストールし、いくつかのクエリを試してみてください!

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

あなたが戻っROOT categoryIFNULLcatjoin.categorynameを拡張することができます:あなたが必要なものを同様の例。

+0

なぜなら、私が結合を避けたいのは、私がSQL文でうまくいかないということです。もう1つの理由は、一般的なモデルを使用しようとしていることです。たとえば、レコードを選択するモデルは次のようになります。 – Zoran

+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(); return $ data; } // [code] – Zoran

+0

しかし、あなたが私の参加を手伝うことができれば、私はそれを試してみましょう。私の質問にお返事ありがとう、私は非常に感謝します – Zoran

関連する問題