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

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


globestar

Recommended Posts

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

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

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

 

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

 

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

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

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

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 и добавить его в таблицу ?

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

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

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

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

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

 

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

 

Кроме productAdd

 

есть еще  copy

 

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

 

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

 

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

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

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

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

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

 

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

 

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

 

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

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

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

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

 

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

 

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

И там  где..

 

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

 

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

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

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

 

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

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

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

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

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

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

 

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

 

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

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

 

 

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

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

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

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

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

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

 

 

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

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

  • 1 year later...

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

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


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

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

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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