2

私はphpとmysqlで作業しています。テーブルカテゴリがあり、親カテゴリの下にサブカテゴリを表示する必要があります。お気に入り

猫1

  -> Subcat1

         -> Subcat11

  -> Subcat2

         --> Subcat21

              --> Subcat211

猫2

  -> Subcat2

         -> Subcat21

              -->Subcat22
  -> Subcat3

         --> Subcat31

              --> Subcat311  

私のテーブル構造は次のようなものです:

CREATE TABLE IF NOT EXISTS `category` (
  `cat_id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT 'This is primary key of the table',
  `name` varchar(255) DEFAULT NULL,
  `parent_cat_id` bigint(11) NOT NULL,   
  PRIMARY KEY (`cat_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ; 

どうすればクエリを実行できますか。

4

3 に答える 3

1

例:

<?php
class RightMenu {
    public $menu;
    public $patch = '';

    public function getMenu($parent = 0) {
        $DB = new DataBase();
        $result = $DB->exec("SELECT * FROM cont_sections WHERE parentid = $parent AND status = 1 ORDER BY name;");
        if(mysql_num_rows($result) > 0) {
            echo '<ul>';
            while($row = mysql_fetch_assoc($result)) {
                if($row['parentid'] == 0){
                    $this->patch = '';
                }
                $this->patch .= '/' . $row["translit"];
                echo '<li><a href="/section'.$this->patch.'.html">' . $row["name"] . '</a>';
                echo $this->getMenu($row["id"]);
                echo '</li>';
            }
            echo '</ul>';
        }
        mysql_free_result($result);
        unset($DB);
    }
}
?>
于 2012-10-15T10:54:24.403 に答える
0

カテゴリとサブカテゴリを表示するには、再帰関数を記述する必要があります

getAllSubCats(0);

function getAllSubCats($cat, $depth = NULL)
{
    $this_cat = mysql_fetch_object(mysql_query("select * from categories where id= '$cat'"));

    $indent = str_repeat("     ", $depth);
    echo $indent . $this_cat->name . "<br />";

    $result = mysql_query("select * from categories where parent_cat_id = '$cat'");

    while($cat = mysql_fetch_object($result))
    {
        getAllSubCats($cat->id, $depth + 1);
    }
}

または、次のクエリを使用します 1 2 1 関係の場合

SELECT cat_id, name, (SELECT name FROM categories WHERE cat_id = a.parent_id) parent_name FROM categories a 
于 2012-10-15T10:46:08.447 に答える
0

自己結合を使用する

SELECT p.cat_id, p.name, c.cat_id, c.name
FROM tbl_category p
INNER JOIN tbl_category c ON p.cat_id = c.parent_cat_id

次に、得られた配列を PHP で操作して、表形式で表示します

于 2012-10-15T10:54:06.777 に答える