【问题标题】:Codeigniter: Categories and SubcategroiesCodeigniter:类别和子类别
【发布时间】:2014-07-28 19:44:26
【问题描述】:

我正在尝试制作餐厅菜单,我必须有 CategoriesSubcategories,因此我创建了以下表格:

Table: Categories
       ID
       NAME

Table: Subcategories
       ID
       NAME
       PRICE
       DESCRIPTION
       CATEGORIES_ID

我正在使用 wanwizard 的 Codeigniter 和 DataMapper PHP。所以目前我有一些版本的 2 foreach 循环,但问题是当我添加一个新的 SUBCATEGORY 并且只出现最后一个时,所以它没有列出该类别的所有子类别错了吗?

public function index()
{

$categories = new Category_model();
$subcategories = new Subcategory_model();
$categories->get();
$subcategories->get();

$recent_categories = array();
foreach ($categories as $category)
{
  foreach($subcategories as $subcategory)
  {
    if($subcategory->categories_id == $category->id)
    {
      $single_category = array
      (
        'category_name' => $category->name,
        'subcategory_name' => $subcategory->name,
        'subcategory_description' => $subcategory->description,
        'subcategory_price' => $subcategory->price,
      );
    }
  }
  array_push($recent_categories, $single_category);
}

$data = array
(
  'categories' => $recent_categories,
);

$this->parser->parse('templates/content_menu', $data);
}

这是风景:

{categories}
  <div class="grid-12 ourmenu">
    <!-- MENU TITLE -->
    <h2>{category_name}</h2>
    <hr/>
      <!-- MENU ITEM -->
      <h4>
        <a class="clb-photo" href="<?php echo site_url('design/images/photos/food.jpg'); ?>">
          {subcategory_name}
        </a>
        <span>{subcategory_price}</span>
      </h4>
      <p>{subcategory_description}</p>
  </div>
  {/categories}

【问题讨论】:

  • 你把我弄丢了... 所以目前我有一些版本的 2 个 foreach 循环,但问题是当我添加一个新的 SUBCATEGORY 并且只有最后一个出现是“2 foreach 循环的某个版本?”而“只出现最后一个”——最后一个出现在哪里?您是否检查了数据库以查看它是否存在?您需要更清楚地说明您的问题陈述
  • 看我给出的代码。当我添加一个新的 SUBCATEGORY 并进入视图并查看结果时,我只看到最后一个条目而前一个条目消失了。所以它看起来像这样:--CATEGORY-- -- SUBCATEGORY-- --CATEGORY-- -- SUBCATEGORY-- 我必须有多个 SUBCATEGORY 但它只显示一个
  • 当你在这个页面打印 $data 时你只得到最后一条记录?
  • 我只得到 SUBCATEGORY 的最后一条记录,否则 CATEGORIES 就应该在那里。检查 FOREACH LOOPS 我认为我错了

标签: php codeigniter foreach codeigniter-datamapper


【解决方案1】:

它在你的循环结构中。您需要在foreach($subcategories as $subcategory) 循环中执行array_push。您的 single_category 数组在循环的每次迭代中都会被覆盖,但在被覆盖之前,它永远不会添加到 recent_categories 数组中。将您的代码更改为:

foreach ($categories as $category)
{
  foreach($subcategories as $subcategory)
  {
    if($subcategory->categories_id == $category->id)
    {
      $single_category = array
      (
        'category_name' => $category->name,
        'subcategory_name' => $subcategory->name,
        'subcategory_description' => $subcategory->description,
        'subcategory_price' => $subcategory->price,
      );
      array_push($recent_categories, $single_category); // ****** MOVED THIS LINE 
    }
  }
}

【讨论】:

    猜你喜欢
    • 2013-05-28
    • 2017-05-26
    • 1970-01-01
    • 2015-04-05
    • 2012-10-14
    • 1970-01-01
    相关资源
    最近更新 更多