Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Как сделать проверку модели на уникальность


ilerok
 Поделиться

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

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

 

С меня плюсик и огроменное спасибо)

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


1 минуту назад, VTstudio сказал:

поставить индекс unique, в БД.

 

я 0 в php и в базах(( подскажите пожалуйста какой запрос выполнить и что добавить в коде, повторю по вашей инструкции

 

уверен, вопрос мой актуален не только для меня будет) 

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


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

Изменено пользователем ilerok
Ссылка на комментарий
Поделиться на других сайтах


1 минуту назад, ilerok сказал:

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

тут не обойтись

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

Только что, VTstudio сказал:

тут не обойтись

 

сможете бесплатно подсказать как сделать?  с меня плюсик, и большое человеческое спасибо)

 

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


Сейчас там стоит такая проверка:

 

if ((utf8_strlen($this->request->post['model']) < 1) || (utf8_strlen($this->request->post['model']) > 64)) {
              $this->error['model'] = $this->language->get('error_model');
        }

 

На пустоту поля, а нужно на уникальность поменять как то

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


17 минут назад, ilerok сказал:

Сейчас там стоит такая проверка:

 

if ((utf8_strlen($this->request->post['model']) < 1) || (utf8_strlen($this->request->post['model']) > 64)) {
              $this->error['model'] = $this->language->get('error_model');
        }

 

На пустоту поля, а нужно на уникальность поменять как то

if (utf8_strlen($this->request->post['keyword']) > 0) {
			$this->load->model('catalog/url_alias');

			$url_alias_info = $this->model_catalog_url_alias->getUrlAlias($this->request->post['keyword']);

			if ($url_alias_info && isset($this->request->get['product_id']) && $url_alias_info['query'] != 'product_id=' . $this->request->get['product_id']) {
				$this->error['keyword'] = sprintf($this->language->get('error_keyword'));
			}

			if ($url_alias_info && !isset($this->request->get['product_id'])) {
				$this->error['keyword'] = sprintf($this->language->get('error_keyword'));
			}
		}

Сделать по аналогии

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

1)Сделать бекапы обязательно! admin/model/catalog/product.php  и  admin/controller/catalog/product.php

2)в файле admin/model/catalog/product.php  после "class ModelCatalogProduct extends Model {"  вставить функцию:

	public function getProductModel($model) {
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product WHERE model='".$this->db->escape($model)."'");
		return $query->num_rows;
	}

 

3)Код проверки в контроллере admin/controller/catalog/product.php заменить на:

if (((utf8_strlen($this->request->post['model']) < 1) || (utf8_strlen($this->request->post['model']) > 64)) && !$this->model_catalog_product->getProductModel($this->request->post['model'])) {
              $this->error['model'] = $this->language->get('error_model');
        }

 

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

Изменено пользователем Slavikovna
Ссылка на комментарий
Поделиться на других сайтах

5 минут назад, VTstudio сказал:

if (utf8_strlen($this->request->post['keyword']) > 0) {
			$this->load->model('catalog/url_alias');

			$url_alias_info = $this->model_catalog_url_alias->getUrlAlias($this->request->post['keyword']);

			if ($url_alias_info && isset($this->request->get['product_id']) && $url_alias_info['query'] != 'product_id=' . $this->request->get['product_id']) {
				$this->error['keyword'] = sprintf($this->language->get('error_keyword'));
			}

			if ($url_alias_info && !isset($this->request->get['product_id'])) {
				$this->error['keyword'] = sprintf($this->language->get('error_keyword'));
			}
		}

Сделать по аналогии

говорил же совсем 0 в php( если будет минутка подскажите плз как по аналогии сделать в виде решения 

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


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

1)Сделать бекапы обязательно! admin/model/catalog/product.php  и  admin/controller/catalog/product.php

2)в файле admin/model/catalog/product.php  после "class ModelCatalogProduct extends Model {"  вставить функцию:


	public function getProductModel($model) {
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product WHERE model='".$this->db->escape($model)."'");
		return $query->num_rows;
	}

 

3)Код проверки в контроллере admin/controller/catalog/product.php заменить на:


if (((utf8_strlen($this->request->post['model']) < 1) || (utf8_strlen($this->request->post['model']) > 64)) && !$this->model_catalog_product->getProductModel($this->request->post['model'])) {
              $this->error['model'] = $this->language->get('error_model');
        }

 

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

спасибо!)) ща затестим 

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


Почему условие И
Почему проверка на отсутствие записей

!$this->model_catalog_product->getProductModel($this->request->post['model'])

А как же условие проверки при редактировании товара

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


del

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

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

А как же условие проверки при редактировании товара

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

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

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

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

Что вернет запрос на уникальность модели, при редактировании товара?

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


1 минуту назад, thentru сказал:

Что вернет запрос на уникальность модели, при редактировании товара?

точно, протупил

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

        public function getProductModel($model,$product_id = false) {
            if($product_id){
                $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product WHERE model='".$this->db->escape($model)."' and product_id != '".(int)$product_id."'");
            } else {
                $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product WHERE model='".$this->db->escape($model)."'");
            }
		
		return $query->num_rows;
	}

 

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

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

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

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