Recommended Posts

Подскажите по каким параметрам проверяются дубликаты,

на базовом сайте sitebill, не дал добавить объявление с одинаковыми: улица, номер дома.

Хотелось бы расширить проверки на дубликаты, хотя бы до цены и площади.

Спасибо!

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


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

Вот функция проверки уникальности

    function checkUniquety($form_data){    	    	if(isset($form_data['city_id']) && isset($form_data['street_id']) && isset($form_data['number'])){    		$DBC=DBC::getInstance();    		$q='SELECT COUNT(id) AS cnt    		FROM '.DB_PREFIX.'_'.$this->table_name.'    		WHERE city_id='.(int)$form_data['city_id']['value'].'    		AND street_id='.(int)$form_data['street_id']['value'].'    		AND number='.(int)$form_data['number']['value'];    		$stmt=$DBC->query($q);    		    		if($stmt){    			$ar=$DBC->fetch($stmt);    			if($ar['cnt']>0){    				$this->riseError('Такое объявление уже существует');    				return FALSE;    			}    		}    	}    	return TRUE;    }

Тут пока только город, улица, номер дома. В будущих версиях сделаем дополнительные настройки.

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


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

Спасибо! Сделал, как просил заказчик, может кому и пригодится:

function checkUniquety($form_data){          if(isset($form_data['city_id']) && isset($form_data['street_id']) && isset($form_data['number']) && isset($form_data['fiovlad'])){     $DBC=DBC::getInstance();     $q='SELECT COUNT(id) AS cnt     FROM '.DB_PREFIX.'_'.$this->table_name.'     WHERE city_id='.(int)$form_data['city_id']['value'].'     AND street_id='.(int)$form_data['street_id']['value'].'     AND number='.(int)$form_data['number']['value'].'AND fiovlad='.(int)$form_data['fiovlad']['value'];     $stmt=$DBC->query($q);          if($stmt){     $ar=$DBC->fetch($stmt);     if($ar['cnt']>0){     $this->riseError('Такое объявление уже существуе');     return FALSE;     }     }     }     return TRUE;    }

Добавил в базу таблицу re_fiovlad с столбцами id, name

и в редакторе форм, форму в data по аналогии с street. и проверяет по 4 параметрам. 

Большое спасибо за наводку!

 

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


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

Добавил в базу таблицу re_fiovlad с столбцами id, name

и в редакторе форм, форму в data по аналогии с street. и проверяет по 4 параметрам. 

Большое спасибо за наводку!

Только учтите что при обновлении ваши изменения будут стерты.

Поэтому их нужно будет после обновления накатывать снова.

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


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

Только учтите что при обновлении ваши изменения будут стерты.

Поэтому их нужно будет после обновления накатывать снова.

Спасибо за уточнение, обязательно возьму на вооружение!

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


Ссылка на сообщение
Поделиться на других сайтах
В 22.12.2014 в 05:49, rumantic сказал:

Вот функция проверки уникальности


    function checkUniquety($form_data){    	    	if(isset($form_data['city_id']) && isset($form_data['street_id']) && isset($form_data['number'])){    		$DBC=DBC::getInstance();    		$q='SELECT COUNT(id) AS cnt    		FROM '.DB_PREFIX.'_'.$this->table_name.'    		WHERE city_id='.(int)$form_data['city_id']['value'].'    		AND street_id='.(int)$form_data['street_id']['value'].'    		AND number='.(int)$form_data['number']['value'];    		$stmt=$DBC->query($q);    		    		if($stmt){    			$ar=$DBC->fetch($stmt);    			if($ar['cnt']>){    				$this->riseError('Такое объявление уже существует');    				return FALSE;    			}    		}    	}    	return TRUE;    }

Тут пока только город, улица, номер дома. В будущих версиях сделаем дополнительные настройки.

Дополнительные настройки были добавлены или нет?

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


Ссылка на сообщение
Поделиться на других сайтах
В 18.04.2016 в 20:03, bogdanoff сказал:

Дополнительные настройки были добавлены или нет?

про  (apps.realty.similar_preg)

возможно єто то, что вам нужно.

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


Ссылка на сообщение
Поделиться на других сайтах
20 часов назад, abushyk сказал:

про  (apps.realty.similar_preg)

возможно єто то, что вам нужно.

Не совсем разобрался поможет ли мне это. Я опишу проблему, может после этого все прояснится.

Пользователи на сайте дублируют свои объявления, например есть неактивный объект и вместо того, чтобы его активировать, пользователь заносит его по новой. Может он это делает намеренно, может нет, но как итог недовольство ресурсов. Сайт rentzilla.ru приостановил загрузку моего фида с формулировкой:  В каждой новой выгрузке вы одним и тем же объявлениям присваиваете новый уникальный идентификатор. У объявления должен сохраняться его уникальный номер и в случае изменения информации объявления он по-прежнему должен выгружаться со старым идентификатором.

Как с этим бороться?

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


Ссылка на сообщение
Поделиться на других сайтах
В 21.04.2016 в 18:34, bogdanoff сказал:

Не совсем разобрался поможет ли мне это. Я опишу проблему, может после этого все прояснится.

Пользователи на сайте дублируют свои объявления, например есть неактивный объект и вместо того, чтобы его активировать, пользователь заносит его по новой. Может он это делает намеренно, может нет, но как итог недовольство ресурсов. Сайт rentzilla.ru приостановил загрузку моего фида с формулировкой:  В каждой новой выгрузке вы одним и тем же объявлениям присваиваете новый уникальный идентификатор. У объявления должен сохраняться его уникальный номер и в случае изменения информации объявления он по-прежнему должен выгружаться со старым идентификатором.

Как с этим бороться?

Включайте опцию filter_double_data

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


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, rumantic сказал:

Включайте опцию filter_double_data

Если включить эту функцию, то разные пользователи смогут внести разные квартиры в доме с одним адресом?

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


Ссылка на сообщение
Поделиться на других сайтах
19 часов назад, bogdanoff сказал:

Если включить эту функцию, то разные пользователи смогут внести разные квартиры в доме с одним адресом?

Нет.

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


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

Ой. я почему-то прочитал про параметры "похожих", а тут дублей. В том же разделе настроек есть поле apps.realty.uniq_params в котором через запятую можно перечислить системные имена полей из модели data равенство которых будет означать наличие дубли. Установив там список и включив настройку filter_double_data вы заставите код отслеживать совпадения по заданным параметрам. Например вы можете задать

city_id,topic_id,price

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

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


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

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

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Realtor сказал:

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

Т.е. где-то эти поля могут быть и не пустыми, а где-то пустыми?

Подумаем.

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


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

Да. К примеру установили   в apps.realty.uniq_params

city_id,topic_id, district_id,street_id,room_count,floor,floor_count

 

Размещаем теперь объявление 

city_id,topic_id, district_id,street_id,room_count,floor,floor_count

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

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


Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, Realtor сказал:

Да. К примеру установили   в apps.realty.uniq_params

city_id,topic_id, district_id,street_id,room_count,floor,floor_count

 

Размещаем теперь объявление 

city_id,topic_id, district_id,street_id,room_count,floor,floor_count

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

Хм, если делать как вы хотите, то пропадает смысл параметра защиты от дубликатов. Ведь просто можно насоздавать пустых объявлений тогда...

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, rumantic сказал:

Хм, если делать как вы хотите, то пропадает смысл параметра защиты от дубликатов. Ведь просто можно насоздавать пустых объявлений тогда...

А в чем смысл создавать пустые обьявления? Их просто никто не найдет.

Но если кто то не проставил улицу и в ней находится пустое значение, то при добавлении таких же параметров с пустой улицей,новый обьект будет считаться дублем. Хотя это разные обьекты

 

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


Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, Realtor сказал:

А в чем смысл создавать пустые обьявления? Их просто никто не найдет.

Но если кто то не проставил улицу и в ней находится пустое значение, то при добавлении таких же параметров с пустой улицей,новый обьект будет считаться дублем. Хотя это разные обьекты

 

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

Ведь этот принцип будет работать вообще для всех полей, а следовательно все поля могут быть у всех пустыми.

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


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

Предложение.
В таких случаях предусмотреть после сохранения выдать сообщение , что возможно дубль с объявлением сайт.ру/realtyxxxx.html  (активная ссылка) по параметру (например street_id->name) внесено пустое значение, Внести изменения  объявление по параметру ( street_id->name) (активная ссылка на редактирование)

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


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

А может проще в data установить нужные поля как обязательные? Соответственно, пока их не заполнишь, новое объявление не сохранится, сообщая пользователю о незаполненности обязательных полей.

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


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

Чем больше ограничений в вопросе заполнения, тем меньше шансов увеличения потока клиентов на сайт для размещения.
Т.к. выходят сообщения после заполнения, и клиент снова должен найти поля которые не заполнил в куче полей заполнения, что отпугивает потенциальных клиентов. Чем проще , тем лучше

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


Ссылка на сообщение
Поделиться на других сайтах
В 10.11.2016 в 15:31, rumantic сказал:

Т.е. где-то эти поля могут быть и не пустыми, а где-то пустыми?

Подумаем.

При размещении объявления с параметрами город,улица,... комнат,этаж,этажность... phone при пустом значении phone не размещается объект как дубль. 

Есть ли возможности поставить условии сравнивать, когда phone не равно пустому значению ?

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


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

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

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

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

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

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

Войти

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

Войти сейчас