繁体   English   中英

在PHP中嵌套的foreach仅显示最后一条记录..!

[英]Nested foreach in php showing only last record..!

我想在Opencart的产品页面上按类别显示相同品牌的产品列表。 使用下面的代码显示提供特定品牌产品的类别。 但是产品未显示在类别下。 产品仅显示在一个类别下。 添加结果页面的屏幕截图。

在此处输入图片说明

为此,几乎不需要专家的帮助。

我的代码:

型号/目录/product.php

    public function getManufacturerCategories($manufacturer_id) {
    $query = $this->db->query("
    SELECT 
    DISTINCT c.category_id,cd.name
    FROM
    ". DB_PREFIX . "manufacturer m 
    LEFT JOIN ". DB_PREFIX. "product p ON (m.manufacturer_id = p.manufacturer_id)
    LEFT JOIN ". DB_PREFIX. "product_to_category p2c ON (p2c.product_id = p.product_id)
    LEFT JOIN ". DB_PREFIX. "category c ON (c.category_id = p2c.category_id)
    LEFT JOIN ". DB_PREFIX. "category_description cd ON (cd.category_id = p2c.category_id)
    WHERE
    p.status = 1
    AND m.manufacturer_id = '".(int)$manufacturer_id."'
    AND c.status= 1
    ");

    return $query->rows;

    }

    public function getProductSameBrand($manufacturer_id,$product_id,$cat_id,$cat_name) {

        $product_data = array();

        $query = $this->db->query("
        SELECT 
        DISTINCT p.manufacturer_id,p.product_id,p2c.category_id,cd.name
        FROM 
        " . DB_PREFIX . "product p
         LEFT JOIN ". DB_PREFIX. "product_to_category p2c ON (p2c.product_id = p.product_id)
         LEFT JOIN ". DB_PREFIX. "category_description cd ON (cd.category_id = p2c.category_id)
        WHERE        
        cd.name = '".$cat_name."'
        AND p.manufacturer_id = '".(int)$manufacturer_id."'
        "
        );

            foreach ($query->rows as $result2) {

            $product_data[$result2['product_id']] = $this->getProduct($result2['product_id']); 

            }    

            return $product_data;

        }   

控制器/product/product.php

   $data['category_brand'] = array(); 

        if((int)$product_info['manufacturer_id'] > 0){ 
        $results = $this->model_catalog_product->getManufacturerCategories($product_info['manufacturer_id']);
        }

         foreach ($results as $result) { 
             $cat_name =    $result['name'];
             $cat_id = $result['category_id'];

                $data['category_brand'][] = array(               
                    'category_id' => $cat_id,
                    'name'         =>  $cat_name
                );


            $data['products_brand'] = array();


             if((int)$product_info['manufacturer_id'] > 0){ 

        $results = $this->model_catalog_product->getProductSameBrand($product_info['manufacturer_id'],$this->request->get['product_id'],$cat_id,$cat_name);

                } 

            foreach ($results as $result2) {


                $data['products_brand'][] = array(

                    'product_id' => $result2['product_id'], 
                    'name'         => $result2['name'],
                    'catname'      => $cat_name,
                    'href'         => $this->url->link('product/product', 'product_id=' . $result2['product_id'])

                );

            }

            }    

查看/product/product.tpl

     <?php foreach ($category_brand as $cat) { ?>
                            <h4><?php echo $cat['name']; ?></h4>  
                          <?php foreach ($products_brand as $product) { ?>
                          <?php if($cat['name']==$product['catname']){?>
                         <a href="<?php   echo $product['href']; ?>"> <?php echo $product['name']; ?></a><br/>
                         <?php } ?>
                         <?php } ?>
                         <hr/> 
                    <?php } ?>

问题已解决。。我需要将$ data ['products_brand'] = array();

以上第一个foreach陈述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM