Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-产品显示在子类别中,但如果没有子类别,则不显示在类别中_Php_Codeigniter_Menu_Navigation_E Commerce - Fatal编程技术网

php-产品显示在子类别中,但如果没有子类别,则不显示在类别中

php-产品显示在子类别中,但如果没有子类别,则不显示在类别中,php,codeigniter,menu,navigation,e-commerce,Php,Codeigniter,Menu,Navigation,E Commerce,下面是我的category.php,它使用switch语句来显示子类别或产品。当我点击一个子类别时,它会像预期的那样显示产品。但是,如果类别没有子类别,则根本不会显示任何产品 在这种情况下,是否需要更改switch语句,整个foreach循环需要在if语句中,或者db和id是否有问题。。。菜单中我所有的猫都有一个父类id=0,子类对应于类别表的id,产品被分配了一个类别id。这是连接吗 <?php foreach ($listing as $key => $list){ echo "

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

在这种情况下,是否需要更改switch语句,整个foreach循环需要在if语句中,或者db和id是否有问题。。。菜单中我所有的猫都有一个父类id=0,子类对应于类别表的id,产品被分配了一个类别id。这是连接吗

<?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'/>";
}
?>

计算模型中返回的子类别的数量;如果是0;将
false
返回控制器。然后进行测试,查看
$listing
是数组还是false,并向用户输出相应的数据或消息。

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

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


如果主类别没有产品和子类别,那么显示它就毫无意义。

如何获得
$level
变量?在code.Okei中看不到这一点。类别没有子类别,但有链接到它的产品吗?你的数据库设计允许吗?是的,我相信是的。。。两个表分类产品。类别有id、名称、父id。子类别通过父id链接。产品有类别id链接到每个类别,但当我尝试将类别id设置为cat而不是子类别时,没有产品显示。因此,每个子类别都是设置了父类别id的类别。然后在导航栏中显示类别之前,你应该只显示那些有产品或子类别有产品的类别。我的导航栏有5个主要类别,单击后会显示产品页面后面的子类别列表。然而,在我没有子类别的猫身上,根本没有显示任何产品。我需要一些工作来在我的猫身上展示产品,没有子类OK,例如我有id为5的特价商品,我设置了一个id为5的产品游泳池,但仍然没有展示。。。我是否需要加入我的功能。。。我还发布了“按类别获取产品”功能。我建议您首先尝试在phpMyAdmin或类似的程序中执行您想要的操作,然后将其转换为代码并在那里进行测试。那你现在肯定会的。
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');
}
 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;
}