2014-10-27 24 views
0

我有一個Opencart商店訴1.5.4,並且我已經構建了一個定製幫手system/helper/variants.php。我創建了一個函數從數據庫中獲取數據:

function countproductvariant() { 

    $newdb = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE); $registry->set(‘db’, $db); 
    $registry->set(‘newdb’, $newdb); 

    $query = $newdb->query("SELECT count(*) as variants FROM " . DB_PREFIX . "product_option po LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id) LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE po.product_id = '" . (int) $product_id . "' AND od.language_id = '" . (int) $this->config->get('config_language_id') . "' ORDER BY o.sort_order"); 
     return $query->row['variants']; 
} 

我使用這在我的controller/product/product.php這樣的:

$this->data['variantcount'] = countproductvariant(); 

view/.../template/product/product.tpl

echo $variantcount; 

所有我得到是一個空白的屏幕。如果我刪除所有查詢並使用return '0';它正確返回0

唯一的問題是數據庫連接。這是運行數據庫查詢的正確方法嗎?

有沒有人遇到過這種問題?

回答

1

首先:停止做你在做什麼。

第二:詳細瞭解MVC。 OpenCart也是使用MVC實現的,你應該遵循這個標準。

第三:你不需要這個幫手。只需在catalog/model/catalog/product.php文件中定義該方法,即ModelCatalogProduct類。該方法應該是這樣的:

public function count_product_variant($product_id) { 
    $query = $this->db->query("SELECT COUNT(*) AS variants FROM " . DB_PREFIX . "product_option po LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id) LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE po.product_id = '" . (int) $product_id . "' AND od.language_id = '" . (int) $this->config->get('config_language_id') . "' ORDER BY o.sort_order"); 

    return $query->row['variants']; 
} 

四:在您控制器的產品型號應該已經被初始化(找到行$this->load->model('catalog/product');並把這個代碼某處這一行後):

$this->data['variant_count'] = $this->model_catalog_product->count_product_variant($this->request->get['product_id']); 

推薦五:打開你的錯誤報告,以便你明智的錯誤,警告和通知,並可以解決它們。

應該是這樣。

相關問題