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

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

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

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

 

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

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


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

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

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


Ссылка на сообщение
Поделиться на другие сайты
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 и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.