Jump to content
Sign in to follow this  
kagan

Как вывести свои данные с базы

Recommended Posts

Добрый вечер! Подскажите пожалуйста как сделать вывод своих данных с БД в шаблон.

Хочу вывести с таблицы "product_special" значение "date_start" и отобразить его в категориях к каждому товару(свое у каждого).

Для этого делаю вывод переменной 

<?php echo $special_date_end;?>

в файле www\catalog\view\theme\default\template\product\category.tpl

 

Создаю метод для вызова данных из БД в модель (www\catalog\model\catalog\category.php). 

public function getSpecialPriceEndDate($product_id) {
	if ($this->customer->isLogged()) {
		$customer_group_id = $this->customer->getCustomerGroupId();
	} else {
		$customer_group_id = $this->config->get('config_customer_group_id');
	}
	$query = $this->db->query("SELECT price, date_start, date_end FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "' AND customer_group_id = '" . (int)$customer_group_id . "' AND (date_end = '0000-00-00' OR date_end > NOW())) ORDER BY priority ASC, price ASC LIMIT 1");

	if ($query->num_rows) {
		return array(
			'special'    => $query->row['price'],
			'date_end'   => $query->row['date_end'],
		);
	} else {
		return false;
	}
}	

Получаю данные с модели в контроллер

if ((float)$result['special']) {
	$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));

	$special_info = $this->model_catalog_category->getSpecialPriceEndDate($product_id);
	
	if ($special_info) {
		$this->data['special_date_end'] = $special_info['date_end'];
	} else {
		$this->date['special_date_end'] = false;
	}
} else {
	$special = false;
}	

В итоге пишет не определена функция "Notice: Undefined variable: special_date_end".

Share this post


Link to post
Share on other sites

} else {
        $this->date['special_date_end'] = false;
    }
} else {
    $special = false;

    $this->date['special_date_end'] = false;     <------ !!!!!
}    

Share this post


Link to post
Share on other sites

} else {

        $this->date['special_date_end'] = false;

    }

} else {

    $special = false;

    $this->date['special_date_end'] = false;     <------ !!!!!

}    

 

Не помогло. Да и не вижу смысла этого.

 

Немного подумав, дошел о этого(в этой части я уверен):

catalog\controller\product\category.php

foreach ($results as $result) {
....
if ((float)$result['special']) {
	$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));

	$special_info = $this->model_catalog_category->getSpecialPriceEndDate($result['product_id']);

	if ($special_info) {
		$this->data['products']['special_date_start'] = $special_info['date_start'];
		$this->data['products']['special_date_end'] = $special_info['date_end'];
	} else {
		$this->data['products']['special_date_start'] = false;
		$this->data['products']['special_date_end'] = false;
	}

} else {
	$special = false;
}	
....
}

Описываю метод "getSpecialPriceEndDate" в модели "model_catalog_category" так:

public function getSpecialPriceEndDate($product_id) {

$query = $this->db->query("SELECT price, date_start, date_end FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "' AND ((date_start = '0000-00-00' OR date_start < NOW()) AND (date_end = '0000-00-00' OR date_end > NOW())) ORDER BY priority ASC, price ASC LIMIT 1");

	if ($query->num_rows) {
		return array(
			'special'    => $query->row['price'],
			'date_start' => $query->row['date_start'],
			'date_end'   => $query->row['date_end'],
		);
	} else {
		return false;
	}
}

В итоге получаю Notice: Undefined variable: special_date_end in ..catalog\view\theme\default\template\product\category.tpl

Share this post


Link to post
Share on other sites

Может я не правильно делаю вывод data['products']['special_date_start'] в массив товаров?

$this->data['products'][] = array(
	'product_id'  => $result['product_id'],
	'thumb'       => $image,
	'name'        => $result['name'],
	'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..',
	'price'       => $price,
	'special'     => $special,
	'tax'         => $tax,
	'rating'      => $result['rating'],
	'reviews'     => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
	'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
);

Share this post


Link to post
Share on other sites

Не помогло. Да и не вижу смысла этого.

 

Немного подумав, дошел о этого(в этой части я уверен):

catalog\controller\product\category.php

foreach ($results as $result) {
....

В итоге получаю Notice: Undefined variable: special_date_end in ..catalog\view\theme\default\template\product\category.tpl

если не произошло входа в этот цикл, то переменная осталась неопределенной.

Определите ее до цикла.

Share this post


Link to post
Share on other sites

если не произошло входа в этот цикл, то переменная осталась неопределенной.

Определите ее до цикла.

 

Как это если все товары выводит? 

Можете пожалуйста объяснить по-подробнее.

Share this post


Link to post
Share on other sites
В итоге получаю Notice: Undefined variable: special_date_end in ..catalog\view\theme\default\template\product\category.tpl

пришлите мне весь файл. по обрывкам кода тяжело понять где и чего не хватает

Share this post


Link to post
Share on other sites

Спасибо за отклик, надеюсь у Вас получится разобраться. Файлы для изменения

Система Google по проверке безопасности сайтов недавно обнаружила на rghost.ruвредоносное ПО. Его источником является rghost.ru, не раз замеченным в распространении вирусов. 

так что в виде архива пожалуйста или я умываю руки

Share this post


Link to post
Share on other sites

Система Google по проверке безопасности сайтов недавно обнаружила на rghost.ruвредоносное ПО. Его источником является rghost.ru, не раз замеченным в распространении вирусов. 

так что в виде архива пожалуйста или я умываю руки

 

Ок, вот на Я.диск.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.