Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Не передается переменная в модель OS 2.1


GrblFF

Recommended Posts

Здравствуйте. Для учета кто из менеджеров занес товар и чтобы другие менеджеры не видели товары других ввел переменную "user_id" - берется соответственно из таблицы user. В базе к таблице product добавил поле user_id. Теперь админка определяет кто зашел на сайт по id и в товарах показывает только его товары. Проблема в том что при создании товара админка знает что id менеджера допустим 9 и var_dump это в шаблоне показывает. В функции add в модели добавил user_id = '" . (int)$data['user_id'] . "' но в лог пишется PHP Notice:  Undefined index: customer_id как раз в той строке. В контроллере

$this->load->model('user/user');
$user_info = $this->model_user_user->getUser($this->user->getId());

	if (!empty($product_info)) {
			$data['user_id'] = (int)$product_info['user_id'];
		} else  {
			$data['user_id'] = (int)$user_info['user_id'];
		} 

Как передать эту переменную правильно для модели? 

Надіслати
Поділитися на інших сайтах

Вы что-то от нас скрываете, пишет что не определен customer_id , а у вас такого в коде нету...Мб строчкой ошиблись? Стоят ocmod дополнения? Спотрите тогда в папку modification

Надіслати
Поділитися на інших сайтах


2 часа назад, GrblFF сказал:

В функции add в модели добавил user_id = '" . (int)$data['user_id']

в модели, в переменной $data, данные из массива $_POST.  откуда там будет  user_id?

$this->model_catalog_product->addProduct($this->request->post);

или я что-то не так понял?

Надіслати
Поділитися на інших сайтах

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

$this->db->query("UPDATE " . DB_PREFIX . "product SET user_id = '" . (int)$this->user->getId() . "' WHERE product_id = '" . (int)$product_id . "'");

а уже в контроллере реализовать только логику проверки может ли юзер редактировать этот товар
 

Надіслати
Поділитися на інших сайтах


Не передавалось потому, что хоть в контроллере переменная и определялась, но в форму отправки в шаблоне я забыл ее включить. Вставил со свойством display:none и теперь все работает нормально.

  • +1 1
Надіслати
Поділитися на інших сайтах

2 часа назад, GrblFF сказал:

Не передавалось потому, что хоть в контроллере переменная и определялась, но в форму отправки в шаблоне я забыл ее включить.

а нафига таскать идентификатор пользователя из контроллера в шаблон, из шаблона  в модель?

получайте id в модели.  читайте выше сообщение от@thentru

Надіслати
Поділитися на інших сайтах

  • 1 month later...

Ребят а не подскажите как правильно это реализовать, сам только учюсь хотелось бы немного по подробнее о данном действии как и что где прописать,если не сложно,очень буду благодарен
 

Надіслати
Поділитися на інших сайтах


4 часа назад, pasha2298 сказал:

как правильно это реализовать

что это?

Надіслати
Поділитися на інших сайтах

27 минут назад, fanatic сказал:

что это?

то о чем обсуждается в этой статье, именно сами шаги по этапам ,я только учюсь хочу разобраться. Очень буду признателен вам если расскажите куда что подставлять

Змінено користувачем pasha2298
Надіслати
Поділитися на інших сайтах


1 час назад, fanatic сказал:

что это?

Подскажите что я делаю не так и как нужно правильно, вот что я сделал :

1. В контроллер product.php добавил строчки 

1.png.8e59caf5f8b2168973e3afcf68bb8536.png

2.Вставил в модель product.phpвот эти строчки:

2.thumb.png.f551b5f6ab7d2f8a804cd5fc175d217b.png

В итоге при добавлении товара вот такая ошибка при добавлении товара

Fatal error: Uncaught exception 'Exception' with message 'Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1<br />Error No: 1064<br />INSERT INTO oc_product SET model = 'СЂРЅСЂРЅРєРєРї', sku = '', upc = '', ean = '', jan = '', isbn = '', mpn = '', location = '', quantity = '1', minimum = '1', subtract = '1', stock_status_id = '7', date_available = '2017-12-10', manufacturer_id = '0', shipping = '1', price = '123', points = '0', weight = '0', weight_class_id = '1', length = '0', width = '0', height = '0', length_class_id = '1', status = '1', tax_class_id = '0', sort_order = '1', date_added = NOW(), user_id = '' in D:\OSPanel\domains\domzolota.info\system\library\db\mysqli.php:40 Stack trace: #0 D:\OSPanel\domains\domzolota.info\system\library\db.php(16): DB\MySQLi->query('INSERT INTO oc_...', Array) #1 D:\OSPanel\domains\domzolota.info\admin\model\catalog\product.php(4): DB->query('INSERT INTO oc_...') #2 [internal funct in D:\OSPanel\domains\domzolota.info\system\library\db\mysqli.php on line 40

 

Змінено користувачем pasha2298
Надіслати
Поділитися на інших сайтах


42 минуты назад, pasha2298 сказал:

именно сами шаги по этапам

в общих чертах как-то так

1.

 

В 03.11.2017 в 07:47, GrblFF сказал:

В базе к таблице product добавил поле user_id.

2.

В 03.11.2017 в 11:00, thentru сказал:

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


$this->db->query("UPDATE " . DB_PREFIX . "product SET user_id = '" . (int)$this->user->getId() . "' WHERE product_id = '" . (int)$product_id . "'");

3.

В 03.11.2017 в 11:00, thentru сказал:

а уже в контроллере реализовать только логику проверки может ли юзер редактировать этот товар

достали user_id  из таблицы товара

сравнили с id текущего пользователя

совпадает,  разрешаем редактирование

не совпадает, досвиданья

Надіслати
Поділитися на інших сайтах

12 минут назад, fanatic сказал:

в общих чертах как-то так

1.

 

2.

3.

достали user_id  из таблицы товара

сравнили с id текущего пользователя

совпадает,  разрешаем редактирование

не совпадает, досвиданья

А глянте пожалуйста мое сообщение выше что я делаю не так что в итоге у меня вылетает ошибка

 

Надіслати
Поділитися на інших сайтах


запрос на добавление

$this->db->query("INSERT INTO " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', ean = '" . $this->db->escape($data['ean']) . "', jan = '" . $this->db->escape($data['jan']) . "', isbn = '" . $this->db->escape($data['isbn']) . "', mpn = '" . $this->db->escape($data['mpn']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . (int)$data['tax_class_id'] . "', sort_order = '" . (int)$data['sort_order'] . "', date_added = NOW(), user_id = '" . (int)$this->user->getId() . "'");

а update,   добавьте в editProduct()

Надіслати
Поділитися на інших сайтах

8 минут назад, fanatic сказал:

запрос на добавление


$this->db->query("INSERT INTO " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', ean = '" . $this->db->escape($data['ean']) . "', jan = '" . $this->db->escape($data['jan']) . "', isbn = '" . $this->db->escape($data['isbn']) . "', mpn = '" . $this->db->escape($data['mpn']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . (int)$data['tax_class_id'] . "', sort_order = '" . (int)$data['sort_order'] . "', date_added = NOW(), user_id = '" . (int)$this->user->getId() . "'");

а update,   добавьте в editProduct()

то есть этим заменить это

public function editProduct($product_id, $data) {
		$this->db->query("UPDATE " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', ean = '" . $this->db->escape($data['ean']) . "', jan = '" . $this->db->escape($data['jan']) . "', isbn = '" . $this->db->escape($data['isbn']) . "', mpn = '" . $this->db->escape($data['mpn']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . (int)$data['tax_class_id'] . "', sort_order = '" . (int)$data['sort_order'] . "', date_modified = NOW() WHERE product_id = '" . (int)$product_id . "'");

 

Надіслати
Поділитися на інших сайтах


2 минуты назад, pasha2298 сказал:

то есть этим заменить это

нет, добавить после этого

Надіслати
Поділитися на інших сайтах

33 минуты назад, fanatic сказал:

В базе к таблице product добавил поле user_id.

Подскажите а добавить поле как ?

 

Просто добавил как вы сказали 

3.thumb.png.b8bfa8b9b0e6596aeb5eaf132992b8ab.png

в итоге теперь такая ошибка при добавлении товара

Fatal error: Uncaught exception 'Exception' with message 'Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1<br />Error No: 1064<br />INSERT INTO oc_product SET model = 'СЃСЃСЃРІСЃРІСЃ', sku = '', upc = '', ean = '', jan = '', isbn = '', mpn = '', location = '', quantity = '1', minimum = '1', subtract = '1', stock_status_id = '7', date_available = '2017-12-10', manufacturer_id = '0', shipping = '1', price = '0', points = '0', weight = '0', weight_class_id = '1', length = '0', width = '0', height = '0', length_class_id = '1', status = '1', tax_class_id = '0', sort_order = '1', date_added = NOW(), user_id = '' in D:\OSPanel\domains\domzolota.info\system\library\db\mysqli.php:40 Stack trace: #0 D:\OSPanel\domains\domzolota.info\system\library\db.php(16): DB\MySQLi->query('INSERT INTO oc_...', Array) #1 D:\OSPanel\domains\domzolota.info\admin\model\catalog\product.php(4): DB->query('INSERT INTO oc_...') #2 [internal functio in D:\OSPanel\domains\domzolota.info\system\library\db\mysqli.php on line 40

Надіслати
Поділитися на інших сайтах


@pasha2298 , а оно вам нужно?

3 часа назад, pasha2298 сказал:

я только учюсь хочу разобраться

чему учитесь? в чем разобраться?

  • +1 1
Надіслати
Поділитися на інших сайтах

26 минут назад, fanatic сказал:

@pasha2298 , а оно вам нужно?

чему учитесь? в чем разобраться?

я извеняюсь по поводу добавления поля затупил,ну скажите а правильно ли я добавил то что вы написали

3.thumb.png.b8bfa8b9b0e6596aeb5eaf132992b8ab.png

Змінено користувачем pasha2298
Надіслати
Поділитися на інших сайтах


p.s.

это я к тому что вы вообще не в теме.

я вам дал измененный запрос на добавление товара

$this->db->query("INSERT INTO " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', ean = '" . $this->db->escape($data['ean']) . "', jan = '" . $this->db->escape($data['jan']) . "', isbn = '" . $this->db->escape($data['isbn']) . "', mpn = '" . $this->db->escape($data['mpn']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . (int)$data['tax_class_id'] . "', sort_order = '" . (int)$data['sort_order'] . "', date_added = NOW(), user_id = '" . (int)$this->user->getId() . "'");

в конце запроса добавлен код   user_id = '" . (int)$this->user->getId() . "'

данным запросом нужно заменить запрос в методе addProduct

в editProduct, нужно добавить запрос обновления поля user_id

$this->db->query("UPDATE " . DB_PREFIX . "product SET user_id = '" . (int)$this->user->getId() . "' WHERE product_id = '" . (int)$product_id . "'");

а вы, запихнули зарос добавления товара, в метод  editProduct(редактирование товара)

Надіслати
Поділитися на інших сайтах

10 минут назад, fanatic сказал:

p.s.

это я к тому что вы вообще не в теме.

я вам дал измененный запрос на добавление товара


$this->db->query("INSERT INTO " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', ean = '" . $this->db->escape($data['ean']) . "', jan = '" . $this->db->escape($data['jan']) . "', isbn = '" . $this->db->escape($data['isbn']) . "', mpn = '" . $this->db->escape($data['mpn']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . (int)$data['tax_class_id'] . "', sort_order = '" . (int)$data['sort_order'] . "', date_added = NOW(), user_id = '" . (int)$this->user->getId() . "'");

в конце запроса добавлен код   user_id = '" . (int)$this->user->getId() . "'

данным запросом нужно заменить запрос в методе addProduct

в editProduct, нужно добавить запрос обновления поля user_id


$this->db->query("UPDATE " . DB_PREFIX . "product SET user_id = '" . (int)$this->user->getId() . "' WHERE product_id = '" . (int)$product_id . "'");

а вы, запихнули зарос добавления товара, в метод  editProduct(редактирование товара)

Помойму что то начало получаться ошибка ушла сейчас проверю отпишусь,покрайне мере товар добавился

Надіслати
Поділитися на інших сайтах


Ребят а подскажите еще где может быть ошибка,id добавлеться в базу, ну почему то в админке любой поьзователь так и видит все товары которое он даже не зоздавал, вот такое записал в контроллере product

 

<?php
class ControllerCatalogProduct extends Controller {
    private $error = array();

    public function index() {
        $this->load->language('catalog/product');

        $this->document->setTitle($this->language->get('heading_title'));

        $this->load->model('catalog/product');

        $this->getList();   
    }
public function user_id() {
        $this->load->model('user/user');
        $user_info = $this->model_user_user->getUser($this->user->getId());

        if (!empty($product_info)) {
            $data['user_id'] = (int)$product_info['user_id'];
        } else  {
            $data['user_id'] = (int)$user_info['user_id'];
        } 

        $this->getList();
        

        
    }
    public function add() {
        $this->load->language('catalog/product');

        $this->document->setTitle($this->language->get('heading_title'));

        $this->load->model('catalog/product');

Надіслати
Поділитися на інших сайтах


43 минуты назад, pasha2298 сказал:

вот такое записал в контроллере product

а вы сами поняли, что написали(в контроллере)?

в методе  getList найти код

		foreach ($results as $result) {

      $category =  $this->model_catalog_product->getProductCategories($result['product_id']);

			if (is_file(DIR_IMAGE . $result['image'])) {
				$image = $this->model_tool_image->resize($result['image'], 40, 40);
			} else {
				$image = $this->model_tool_image->resize('no_image.png', 40, 40);
			}

			$special = false;

			$product_specials = $this->model_catalog_product->getProductSpecials($result['product_id']);

			foreach ($product_specials  as $product_special) {
				if (($product_special['date_start'] == '0000-00-00' || strtotime($product_special['date_start']) < time()) && ($product_special['date_end'] == '0000-00-00' || strtotime($product_special['date_end']) > time())) {
					$special = $product_special['price'];

					break;
				}
			}

			$data['products'][] = array(
				'product_id' => $result['product_id'],
				'image'      => $image,
				'name'       => $result['name'],
				'model'      => $result['model'],
				'price'      => $result['price'],
				'category'   => $category,
				'special'    => $special,
				'quantity'   => $result['quantity'],
				'status'     => $result['status'] ? $this->language->get('text_enabled') : $this->language->get('text_disabled'),
				'edit'       => $this->url->link('catalog/product/edit', 'token=' . $this->session->data['token'] . '&product_id=' . $result['product_id'] . $url, true)
			);
		}

это формируется массив товаров

подумайте, что нужно дописать, чтобы в массив добавлялись только те товары,  user_id у которых,  равен id текущего пользователя

подсказка

if($result['user_id'] == (int)$this->user->getId()){......................

 

  • +1 1
Надіслати
Поділитися на інших сайтах

2 часа назад, fanatic сказал:

if($result['user_id'] == (int)$this->user->getId()){.....................

надеюсь я правильно понял прошу не пинать

if($result['user_id'] == (int)$this->user->getId()){  $user = $product_user['user_id'];

                    break;
                }
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.