0

php、mysql、smarty テンプレートを使用して、スーパーマーケット用のカスタム ショッピング カートを作成しています。製品カテゴリとサブカテゴリは、2 つの別々のテーブルにある必要があります。カテゴリ テーブル (id、catname) サブカテゴリ テーブル (id、cat_id、subcategory)。カテゴリには、各カテゴリに 2 つのカテゴリと 2 つのサブカテゴリがあるとします。私の php コードは

$smarty = new Smarty;
$smarty->caching = true;
$smarty->cache_lifetime = 120;
$category_mysql = "SELECT * FROM category";
$run_category = mysql_query($category_mysql, $link) or die(mysql_error());
$all_category = mysql_num_rows($run_category);

$category_link = array();
$i=0;
while ($category = mysql_fetch_assoc($run_category)) {
            $ml = array(
                'id' => $category['id'],
                'catname'=> $category['catname'],
            );
            $category_link[$i++] = $ml;
}
$smarty->assign('category_link', $category_link);
$smarty->display("products.tpl");

私のhtmlコードは次のとおりです。

{section name=cats loop=$category_link}
<div class="category">{$category_link[cats].catname}</div>
{/section}

属するカテゴリの下にある各サブカテゴリを表示するにはどうすればよいですか?? お気に入り:

<div class="category">Category 1</div>
<div class="subcat">Sub Cat 1</div>
<div class="subcat">Sub Cat 2</div>
<div class="category">Category 2</div>
<div class="subcat">Sub Cat 3</div>
<div class="subcat">Sub Cat 4</div>

よろしく

4

1 に答える 1

1

この特定の猫の皮を剥ぐにはさまざまな方法があり、いくつかは他よりも効率的です. 以下は私の頭のてっぺんから外れており、正しい一般的な方向に向かうことを目的としています.

それに加えて$category_link、サブカテゴリをカテゴリ別にインデックス化するものが必要です。which のような$subcategory_linkものは、最初にカテゴリ ID (または名前) によってインデックス付けされ、次に各サブカテゴリ (またはその ID など) の増分整数によってインデックス付けされた配列の配列である可能性があります。既存のクエリとwhileループに加えて、すべてのサブカテゴリを取得するクエリを実行し、2 番目の同様のループ$subcategory_linkで関連情報を入力します。while

$sc = array(
    'id' => $subcategory['id'],
    'subcategory' => $subcategory['subcategory'],
);
$subcategory_link[$subcategory['cat_id']][$j++] = $sc;

この配列は、最初にカテゴリ ID によってインデックス付けされることに注意してください。次に、テンプレートで:

{foreach $category_link as $cat}
<div class="category">{$cat.catname}</div>
    {foreach $subcategory_link[$cat.cat_id] as $subcat}
<div class="subcat">{$subcat.subcategory}</div>
    {/foreach}
{/foreach}

: 上記は、適切な Smarty 構文についてチェックされていません。しかし、あなたはアイデアを得る必要があります。

サブカテゴリのないカテゴリをどのように処理するかを決定し、効率を改善することは、演習として残します。

于 2013-01-01T02:10:19.750 に答える