Перейти к содержанию
kagan

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

Рекомендуемые сообщения

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

Хочу вывести с таблицы "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".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

} 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может я не правильно делаю вывод 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)
);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

catalog\controller\product\category.php

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В итоге получаю Notice: Undefined variable: special_date_end in ..catalog\view\theme\default\template\product\category.tpl

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.