Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

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


Recommended Posts

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

 

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

Link to post
Share on other sites

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

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

 

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

 

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

Link to post
Share on other sites

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

Edited by ilerok
Link to post
Share on other sites

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

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

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

  • +1 1
Link to post
Share on other sites
Только что, VTstudio сказал:

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

 

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

 

Link to post
Share on other sites

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

 

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

 

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

Link to post
Share on other sites

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'));
			}
		}

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

Link to post
Share on other sites

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');
        }

 

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

Edited by Slavikovna
Link to post
Share on other sites
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( если будет минутка подскажите плз как по аналогии сделать в виде решения 

Link to post
Share on other sites

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');
        }

 

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

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites
4 минуты назад, fanatic сказал:

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

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites
        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;
	}

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.