3

こんにちは、愚かな質問が 1 つあります。しかし、そうではないかもしれません。データベースにはテーブルカテゴリがあり、ID、parent_id、タイトル、および説明の 4 つの列があります。Parent_id は現在のカテゴリの子です。

Id |  parent_id |  title  |  description

___________________________________________________

1  |     1      | Main Category | description 


2  |     1      | Sub Category  | description 


3  |     2      | Other Category | description 

4  |     1      | Some Category | description 

データを入力して結果を表示する方法はわかりました。それは問題ではありません。結果を表に表示すると

<table>
   <tr>
        <td> Id </td>
        <td> Parent </td>
        <td> Title </td>
        <td> Desc </td>
   </tr>
    <?php foreach($categories as $category): ?>
    <tr>
       <td> <?php echo $category->id; ?> </td>
       <td> <?php echo $category->parent_id; ?> </td>
       <td> <?php echo $category->title; ?> </td>
       <td> <?php echo $category->eescription; ?> </td>
   </tr>
   <?php endforeach;?>
</table>

これはうまく機能し、他の親カテゴリの下に子カテゴリを表示します: テーブルは次のようになります:

1  |     1      | Main Category | description 
2  |     1      | Sub Category  | description   
3  |     2      | Other Category | description    
4  |     1      | Some Category | description 

私の問題は、このようにすべてのカテゴリとサブカテゴリをリストする方法です

    |-- Main Category
       |--- Sub Category 
           |--- One more cat  

   |--Other Category   
      |--- Some Category

このような ここに画像の説明を入力

forach() を使用してこのデータをフェッチすることは可能ですか? これを行う方法の例。

ありがとう

4

2 に答える 2

2

このhttp://www.sitepoint.com/hierarchical-data-database-2/について読んでください。あなたの問題を解決する必要があります。

于 2013-08-06T21:14:22.237 に答える
1

私はこれをします。Codeigniter フレームワークに取り組んでいます。これが必要な場合は、スクリーンショットのように修正する方法を投稿します。

シンプルなモデルを作成するだけです:

モデル

   /*
    * Get all children categories
    * 
    * Get Hierarchical Data from Categories
    * 
    * @ikac
    */

   public function fetchChildren($parent, $level) {


       $this->handler = $this->db->query("SELECT * FROM content_categories WHERE parent='".$parent."' ");


          foreach($this->handler->result() as $row) {
             echo str_repeat('&nbsp; &nbsp; &nbsp; &nbsp; |-----', $level).$row->title .'<br>';

             $this->fetchChildren($row->title, $level+1);
          }

   }

}

あなたが得る出力のように

Default
     |-----Sub Category
     |-----Test Category 1
           |-----Seccond Test Category 1

ありがとう@ユージーン

于 2013-08-06T22:31:10.873 に答える