2

プロジェクトの階層カテゴリと製品テーブルを使用しています。

カテゴリテーブル構造:

ID-親-タ​​イトル

1-0-コンピューター

1-0-電話

..。

行25107のカテゴリテーブル数。

製品テーブルの構造

ID-CAT-タイトル

1-1-製品名はこちら

リスト商品の現在のカテゴリとサブカテゴリが必要です。

echo $subcats = categoryChild(0);

出力は次のとおりです。64198、18355、18356、95623、90504、6118、90505、6117、90506、90507、6119、6120、90508、90509、90510、90511、6103、90512、90513、90514、90515、142686、142688、142790 、90516,6105,90517,90518,90519,90520,90521,91691,91692,92189,92190,92312,92313,95618,95619,95620,95621,95622,142684,142690,142692,142694,142696,142698,142700 、3596

そして、私はこの出力MySQLINステートメントを使用しています。最後に、次のSQLクエリを生成します。

SELECT * FROM products WHERE cat IN (64198,18355,18356,95623,90504,6118,90505,6117,90506,90507,6119,6120,90508,90509,90510,90511,6103,90512,90513,90514,90515,142686,142688,142790,90516,6105,90517,90518,90519,90520,90521,91691,91692,92189,92190,92312,92313,95618,95619,95620,95621,95622,142684,142690,142692,142694,142696,142698,142700,3596)

このクエリは非常に遅いです...助けてください。

4

2 に答える 2

2

これを試して:

select p.id as id, p.title as title, c.title as category, c.id as catid
from products p JOIN
(select * from category where id = 1 OR parent = 1) c
on p.cat = c.id

SQLFIDDLEでの動作を確認する

すべての階層レベルを一覧表示するには、次のようなコードを記述します。

// return all childs of category with id $cat
function list_childs($cat){
    // run above query and change (select * from category where id = 1 OR parent = 1)
    // to (select * from category where parent = $cat) and return results
}

次に、コードで、子供を取得するすべてのカテゴリに対してこの関数を呼び出します

于 2012-09-23T12:18:15.697 に答える
0

これを使用すると、parent_id 引数の cat と sub cat を取得できます。ネストされており、css と html でスタイルを設定できます。

`

     <ul class="" id="">

<?php
   function query($parent_id, $extension = null) { //function to run a query
   $query = mysql_query ( "SELECT * FROM exe_categories WHERE parent_id=$parent_id");
   return $query;
}
   function has_child($query) { //This function checks if the menus has childs or not
   $rows = mysql_num_rows ( $query );
   if ($rows > 0) {
    return true;
   } else {
    return false;
   }
}
function fetch_menu($query) {
   while ( $result = mysql_fetch_array ( $query ) ) {
     $id = $result ['id'];
     $title = $result ['title'];
     $menu_link = $result ['menu_link'];
     echo "<li><a href='{$menu_link}'><span>{$title}</span></a>";

        if (has_child ( query ( $id ) )) {
                    echo "<div>";
                    echo '<ul role="menu" class="fofc">';

                    fetch_menu ( query ( $id ) );
                    echo "</ul>";
                    echo "</div>";
        }

             echo "</li>";
      }
 }
   fetch_menu (query(1)); //call this function with 1 parent id

 ?>`
于 2013-07-13T19:35:14.027 に答える