0

サブカテゴリをそれぞれの親カテゴリと一致させようとしています。今のところ、ビューのメイン カテゴリ (本、洋服など) をハードコーディングし、すべてのサブカテゴリを取得する関数を用意してから、ビューで while ループを作成して、すべてのサブカテゴリをそのメイン カテゴリと一致させます。

必要なデータを配列に入れることができました。これは次のようになります。

  array
  1 => 
    array 
      1 => string 'Medicine'
      2 => string 'Fairy tales' 
      3 => string 'Novels' 
    2 => 
    array
      44 => string 'Men's Clothing'
      45 => string 'Men's Accessories'
      49 => string 'Women's Swimwear' 
      50 => string 'Boys' 
      51 => string 'Girls' 
  3 => 
    array
      52 => string 'Perfume Sprays'
      53 => string 'Roll ons'
      54 => string 'Deodorants'
      64 => string 'Miscellaneous'

ここで、1、2、3 はメイン カテゴリ ID で、内部の配列は subcat_id => subcat_name に対応します。

私のモデルでは、次のようにしてこの配列を取得しました。

function getsub()
{
    $this->db->select('sub_id,sub_name,cat_id');
    $q = $this->db->get('subcategories');

    $subcats = array();

    foreach($q->result() as $row)
    {
        $subcats[$row->cat_id][$row->sub_id] = $row->sub_name;
    }

    return $subcats;
}

次に、私の見解では、どのカテゴリの下でも、while ループを作成して、その cat_id に一致するすべてのサブカテゴリを表示します。

<ul class="dropdown-menu">
<?php while($subcats['cat_id'] == 1)?>

<?php{?>

  <li><a href="main/sub_prod/<?php echo $subcats['sub_id'];?>">
<?php echo $subcats['sub_name'];?></a></li>

<?php}?>

</ul>

しかし、各リスト項目を作成する行で、「undefined index: 'subcat_name'」というエラーが表示されます。そのリスト項目の subcat_id についても同様です。誰かが何が悪いのか教えてもらえますか? ありがとうございました

4

2 に答える 2

2

これを試して:

    <ul class="dropdown-menu">
<?php $i=0; 
 while($subcategories[$i]['cat_id'] == 1){?>

  <li><a href="customer/subcat_products/<?php echo $subcategories[$i]['subcat_id'];?>">
<?php echo $subcategories[$i]['subcat_name'];?></a></li>

<?php $i++;
 }?>

</ul>

カウンター、$i変数を追加しました。whileループは配列を反復しません

于 2013-03-18T18:03:49.830 に答える
1

配列要素にアクセスしようとしている方法に関係しています。あなたはそれを次のように割り当てています

$subcategories[cat_id][subcat_id]

しかし、次のようにアクセスします

$subcategories['subcat_id/name']

これは 2 つの点で間違っています。

  1. cat_id がありません。$subcategories[1][subcat_id] のようなものが必要です
  2. 文字列キーが定義されていません。$subcategories[1]['subcat_id'] は存在しません。ここで、変数 $subcat_id がある場合、 $subcategories[1][$subcat_id] は、次の行で探している subcat_name を返しますが、subcat_id ではありません...

あなたが導入した別の問題は、無限ループがあることです。これを修正する良い方法は、モデルにあるような foreach ループを使用することです。

<?php foreach ($subcategories as $subcategory): ?>
<ul class="dropdown-menu">

  <?php foreach ($subcategory as $subcat_id => $subcat_name):
  <li><a href="customer/subcat_products/<?php echo $subcat_id; ?>">
  <?php echo $subcat_name; ?></a></li>
  <?php endforeach; ?>

</ul>
<?php endforeach; ?>

これにより、すべてのカテゴリがループされ、各サブカテゴリをリスト項目として順序付けられていないリストが出力されます。

于 2013-03-18T18:33:09.430 に答える