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

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


Recommended Posts

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

 

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

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


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

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

 

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

 

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

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


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

Змінено користувачем ilerok
Надіслати
Поділитися на інших сайтах


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

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

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

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

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

 

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'])

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

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


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 користувачів

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

Important Information

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