globestar

Какой пользователь добавил товар?

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

globestar    7

есть созданая группа пользователей, и в не й три пользователя, у каждого есть права добавления товара. Как вывести в карточке товара кто добавил товар?

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


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

есть созданая группа пользователей, и в не й три пользователя, у каждого есть права добавления товара. Как вывести в карточке товара кто добавил товар?

 

Вам нужно связать пользователя с товаром, к примеру создав поле user_id в таблице product или вынести в отдельную таблицу создав в ней два поля product_id и user_id

 

Ну и, соответственно, небольшие "допилы" контроллера и модели, где бы вносилось id пользователя в созданное поле, при добавлении товара.

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


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

так давайте по порядку, может и еще кому то пригодиться.

1. создаем ALTER TABLE `product` ADD `user_id` VARCHAR( 32 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `shipping`

2. admin/comtroller/catalog/product.php функция добавления продукта.

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

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

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

		if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) {
			$this->model_catalog_product->addProduct($this->request->post);

			$this->session->data['success'] = $this->language->get('text_success');

			$url = '';

			if (isset($this->request->get['filter_name'])) {
				$url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8'));
			}

			if (isset($this->request->get['filter_model'])) {
				$url .= '&filter_model=' . urlencode(html_entity_decode($this->request->get['filter_model'], ENT_QUOTES, 'UTF-8'));
			}

			if (isset($this->request->get['filter_price'])) {
				$url .= '&filter_price=' . $this->request->get['filter_price'];
			}

			if (isset($this->request->get['filter_quantity'])) {
				$url .= '&filter_quantity=' . $this->request->get['filter_quantity'];
			}

			if (isset($this->request->get['filter_status'])) {
				$url .= '&filter_status=' . $this->request->get['filter_status'];
			}

			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}

			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}

			if (isset($this->request->get['page'])) {
				$url .= '&page=' . $this->request->get['page'];
			}

			$this->response->redirect($this->url->link('catalog/product', 'token=' . $this->session->data['token'] . $url, 'SSL'));
		}

		$this->getForm();
	}

как мне определить юзера по id и добавить его в таблицу ?

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


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

так давайте по порядку, может и еще кому то пригодиться.

1. создаем ALTER TABLE `product` ADD `user_id` VARCHAR( 32 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `shipping`

2. admin/comtroller/catalog/product.php функция добавления продукта.

как мне определить юзера по id и добавить его в таблицу ?

 

Поле user_id лучше сделать тип int размер 11

 

Можно сразу править модель, id пользователя берем из сессии - файл admin/model/catalog/product.php

 

В функцию addProduct, где идет вставка в таблицу product,  добавить

, user_id = '" . (int) $this->session->data['user_id'] . "'

product_user.jpg

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


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

$this->user->getID() - более верно

 

$this->session->data['user_id'] - это и верно и нет.

 

Кроме productAdd

 

есть еще  copy

 

так вот после copy нужно апдейтить user_id

 

Здесь еще есть одно замечание..

 

Как по мне лучше не user_id, а username

Это даст возможность не джойнить таблицу user

И в случае удаления user останется хоть какой-то читабельный след

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


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

Согласен, нюансов много. Посредственный вопрос - посредственный ответ.

 

Речь шла о добавлении товара и кто добавил.

 

username возможно и верно, но с точки зрения построения структуры БД, не совсем правильно.

 

PS а если имя пользователя изменилось?

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


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

PS а если имя пользователя изменилось?

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

 

Но  для систем общего назначения увы..

 

И.. ну мне назовут магазины с 5 менеджерами? В две смены? а в сезон и три?

И там  где..

 

вот такой банер при логине в админку, с регистрацией события - "япрочитал"

 

Приступая к работе, я принимаю соглашение о своей ответственности за:

  • конфиденциальность информации, поступающей от клиентов,
  • точность внесения данных,
  • их сохранность,
  • исключение возможности доступа к ним и использования другими лицами;
толерантность - исключение возможности:
  • распространения не правдивой или непроверенной информации об организации, которую представляю,
  • использования ресурсов организации для размещения рекламы, пропаганды продукции других организаций или частных лиц,
  • умышленных манипуляций со скидками, акциями.

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


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

В "нормальных" системах можно сделать небольшой "допил" - при удалении пользователя или удалять/отключать товары или переносить товары на другого пользователя.

 

Опять же, что нужно в итоге владельцу сайта.

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


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

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

Тогшда бы отпала необходимость добавлять поля..

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

Или... КТО удалил и заказ?

 

Вот где необходим явный user_id, так это в заказах, а точнее в истории

 

Вот здесь, уже действительно есть где развернуться..

Учет работы менджеров

 

 

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

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


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

Ну так может поделитесь с ТС платно/бесплатно для решения его проблемы, а то мы тут демагогию разводим :-D

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


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

так я ж бесплатно сказал в каких местах

Указал точки входа

 

 

А платно.. Так случилось, что это накоплено за да года работы и учесть весь объем работы проблематично.  проще было все сразу в код писать.

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


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

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

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


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

Прошу помочь

Изменено пользователем pasha2298

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


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

Получаеться вот такая ошибка

Fatal error: Uncaught exception 'Exception' with message 'Error: Unknown column 'user_id' in 'field list'<br />Error No: 1054<br />INSERT INTO oc_product SET model = 'dsdds', 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 = '1'' 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 function]: ModelCatalogProduct->addProduct(Array) #3 D:\OSPanel\domains\domzolota.info\system\storage\modification\syst in D:\OSPanel\domains\domzolota.info\system\library\db\mysqli.php on line 40

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


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

Ну так вы не добавили поле в таблицу

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


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

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

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

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

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

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

Войти

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

Войти


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

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