【问题标题】:Category.php - products show in subcats but not in categories if it has no subcategoriesCategory.php - 如果产品没有子类别,则产品显示在子目录中,但不显示在类别中
【发布时间】:2011-09-21 15:30:28
【问题描述】:

下面是我的 category.php,它使用 switch 语句来显示子类别或产品。当我单击一个子类别时,它会显示应有的产品。但是,如果该类别没有子类别,则根本不会显示任何产品。

在这种情况下 switch 语句需要更改,整个 foreach 循环需要在 if 语句中还是有有问题db 和 ids...菜单中我所有的猫都有一个 parent_id = 0,子猫对应于类别表的 id,产品被分配一个 category_id。这是 JOIN 的事情吗?

<?php
foreach ($listing as $key => $list){
echo "<img src='".$list['thumbnail']."' border='0' align='left' />";
echo "<h4>";

switch($level){
    case "1":
    echo anchor('welcome/cat/'.$list['id'],$list['name']);
    break;
    case "2":
    echo anchor('welcome/product/'.$list['id'],$list['name']);
    break;

}
echo "</h4>";
echo "<p>".$list['shortdesc']."</p><br style='clear:both'/>";
}
?>

非常感谢任何帮助。

$level 位于欢迎控制器中。

function cat($id){

    $cat = $this->MCats->getCategory($id);
    if (!count($cat)){
        redirect('welcome/index','refresh');
    }
    $data['title'] = "Company |" .$cat['name'];

    if ($cat['parentid'] < 1){
        // show other cats
        $data['listing'] = $this->MCats->getSubCategories($id);
        $data['level'] = 1;

        }else{
        // show products
        $data['level'] = 2;
        $data['listing'] = $this->MCats->getProductsByCategory($id);
        }
        $data['category'] = $cat;
        $data['main'] = 'category';
        $data['navlist'] = $this->MCats->getCategoriesNav();
        $this->load->vars($data);
        $this->load->view('template');
}

get products by category 函数... 这会根据 products 表中的 category_id 选择产品。不过还是没有出现...

 function getProductsByCategory($catid){
    $data = array();
    $this->db->select('id,name,shortdesc,thumbnail');
    $this->db->where('category_id',$catid);
    $this->db->where('status','active');
    $Q = $this->db->get('products');
    if ($Q->num_rows() > 0){
        foreach ($Q->result_array() as $row){
            $data[] = $row;
        }
    }
    $Q->free_result();
    return $data;
}

【问题讨论】:

  • 如何获得$level 变量?在代码中看不到。
  • 欧凯。类别没有子类别,但它有与之链接的产品吗?你的数据库设计允许吗?
  • 是的,我相信...两个表类别的产品。类别有 id、name、父 id。子猫由 parentid 链接。产品有 category_id 链接到每个类别,但是当我尝试将 cat id 设置为猫而不是子猫时,没有产品显示。
  • 所以每个子类别都是设置了 parent_id 的类别。然后在导航中显示类别之前,我假设您应该只显示那些有产品或子类别有产品的产品。
  • 我的导航有 5 只主猫,点击后会有一个子猫列表,然后是产品页面。但是,在我没有子猫的猫身上,根本没有显示任何产品。我需要某种解决方法来在我的猫身上展示产品,而没有子猫

标签: php codeigniter menu navigation e-commerce


【解决方案1】:

尝试执行以下操作。首先您检查数据库,请求的类别是否有产品。然后检查它是否有子类别。如果 sencond 为 false,则选择 first 并显示链接到主类别的产品。

如果主类别没有产品,但它有子类别并且确实有产品,那么它会按照您的代码中的描述工作。

如果主类别没有产品,也没有子类别,那么显示它根本没有意义。

【讨论】:

  • 好吧,例如我有一个 id 为 5 的特价商品,我设置了一个 category_id 为 5 的产品游泳池,但仍然没有显示......我是否可能需要加入我的功能。 ..我还发布了按类别获取产品功能。
  • 我建议你首先尝试在 phpMyAdmin 或类似的东西中做你想做的事情,然后将其转移到代码并在那里进行测试。那么你现在肯定会的。
【解决方案2】:

计算模型中返回的子类别数量;如果为 0;将false 返回给控制器。然后做一个测试,看看$listing是不是一个数组,或者是假的,输出相应的数据或消息给用户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    相关资源
    最近更新 更多