revtail 14 Жалоба Опубликовано: December 21, 2014 Подскажите по каким параметрам проверяются дубликаты,на базовом сайте sitebill, не дал добавить объявление с одинаковыми: улица, номер дома.Хотелось бы расширить проверки на дубликаты, хотя бы до цены и площади.Спасибо! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: December 22, 2014 Вот функция проверки уникальности 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; }Тут пока только город, улица, номер дома. В будущих версиях сделаем дополнительные настройки. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
revtail 14 Жалоба Опубликовано: December 22, 2014 Спасибо! Сделал, как просил заказчик, может кому и пригодится: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 параметрам. Большое спасибо за наводку! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: December 23, 2014 Добавил в базу таблицу re_fiovlad с столбцами id, nameи в редакторе форм, форму в data по аналогии с street. и проверяет по 4 параметрам. Большое спасибо за наводку!Только учтите что при обновлении ваши изменения будут стерты.Поэтому их нужно будет после обновления накатывать снова. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
revtail 14 Жалоба Опубликовано: December 23, 2014 Только учтите что при обновлении ваши изменения будут стерты.Поэтому их нужно будет после обновления накатывать снова.Спасибо за уточнение, обязательно возьму на вооружение! Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
bogdanoff 4 Жалоба Опубликовано: April 18, 2016 В 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; } Тут пока только город, улица, номер дома. В будущих версиях сделаем дополнительные настройки. Дополнительные настройки были добавлены или нет? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: April 20, 2016 В 18.04.2016 в 20:03, bogdanoff сказал: Дополнительные настройки были добавлены или нет? про (apps.realty.similar_preg) возможно єто то, что вам нужно. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
bogdanoff 4 Жалоба Опубликовано: April 21, 2016 20 часов назад, abushyk сказал: про (apps.realty.similar_preg) возможно єто то, что вам нужно. Не совсем разобрался поможет ли мне это. Я опишу проблему, может после этого все прояснится. Пользователи на сайте дублируют свои объявления, например есть неактивный объект и вместо того, чтобы его активировать, пользователь заносит его по новой. Может он это делает намеренно, может нет, но как итог недовольство ресурсов. Сайт rentzilla.ru приостановил загрузку моего фида с формулировкой: В каждой новой выгрузке вы одним и тем же объявлениям присваиваете новый уникальный идентификатор. У объявления должен сохраняться его уникальный номер и в случае изменения информации объявления он по-прежнему должен выгружаться со старым идентификатором. Как с этим бороться? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: April 25, 2016 В 21.04.2016 в 18:34, bogdanoff сказал: Не совсем разобрался поможет ли мне это. Я опишу проблему, может после этого все прояснится. Пользователи на сайте дублируют свои объявления, например есть неактивный объект и вместо того, чтобы его активировать, пользователь заносит его по новой. Может он это делает намеренно, может нет, но как итог недовольство ресурсов. Сайт rentzilla.ru приостановил загрузку моего фида с формулировкой: В каждой новой выгрузке вы одним и тем же объявлениям присваиваете новый уникальный идентификатор. У объявления должен сохраняться его уникальный номер и в случае изменения информации объявления он по-прежнему должен выгружаться со старым идентификатором. Как с этим бороться? Включайте опцию filter_double_data Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
bogdanoff 4 Жалоба Опубликовано: April 25, 2016 4 часа назад, rumantic сказал: Включайте опцию filter_double_data Если включить эту функцию, то разные пользователи смогут внести разные квартиры в доме с одним адресом? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: April 26, 2016 19 часов назад, bogdanoff сказал: Если включить эту функцию, то разные пользователи смогут внести разные квартиры в доме с одним адресом? Нет. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
abushyk 694 Жалоба Опубликовано: April 26, 2016 Ой. я почему-то прочитал про параметры "похожих", а тут дублей. В том же разделе настроек есть поле apps.realty.uniq_params в котором через запятую можно перечислить системные имена полей из модели data равенство которых будет означать наличие дубли. Установив там список и включив настройку filter_double_data вы заставите код отслеживать совпадения по заданным параметрам. Например вы можете задать city_id,topic_id,price и будут блокироваться все записи если они имеют в этих полях значения, которые есть уже в объявлениях добавленных (не пропустятся объявления которые расположены в одном и том же городе, в одном и том же разделе и с одинаковой ценой). 1 bogdanoff reacted to this Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Realtor 47 Жалоба Опубликовано: November 10, 2016 Будьте добры подскажите как сделать, чтобы поля в которых пустые значения , в сравнении не участвовали? или возможно ли это предусмотреть в следующих релизах Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: November 10, 2016 1 час назад, Realtor сказал: Будьте добры подскажите как сделать, чтобы поля в которых пустые значения , в сравнении не участвовали? или возможно ли это предусмотреть в следующих релизах Т.е. где-то эти поля могут быть и не пустыми, а где-то пустыми? Подумаем. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Realtor 47 Жалоба Опубликовано: November 10, 2016 Да. К примеру установили в 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 например пустое значение, и в подаваемом также пустое, выдаст , что в базе такое обявление существует и он является дубликатом Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: November 11, 2016 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 например пустое значение, и в подаваемом также пустое, выдаст , что в базе такое обявление существует и он является дубликатом Хм, если делать как вы хотите, то пропадает смысл параметра защиты от дубликатов. Ведь просто можно насоздавать пустых объявлений тогда... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Realtor 47 Жалоба Опубликовано: November 11, 2016 1 час назад, rumantic сказал: Хм, если делать как вы хотите, то пропадает смысл параметра защиты от дубликатов. Ведь просто можно насоздавать пустых объявлений тогда... А в чем смысл создавать пустые обьявления? Их просто никто не найдет. Но если кто то не проставил улицу и в ней находится пустое значение, то при добавлении таких же параметров с пустой улицей,новый обьект будет считаться дублем. Хотя это разные обьекты Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Дмитрий Кондин 690 Жалоба Опубликовано: November 11, 2016 6 минут назад, Realtor сказал: А в чем смысл создавать пустые обьявления? Их просто никто не найдет. Но если кто то не проставил улицу и в ней находится пустое значение, то при добавлении таких же параметров с пустой улицей,новый обьект будет считаться дублем. Хотя это разные обьекты Ну вы видите задачу с точки зрения именно этого примера, а я вам объясняю как будет вести себя алгоритм, если сделать так как вы хотите. Ведь этот принцип будет работать вообще для всех полей, а следовательно все поля могут быть у всех пустыми. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Realtor 47 Жалоба Опубликовано: November 11, 2016 Предложение. В таких случаях предусмотреть после сохранения выдать сообщение , что возможно дубль с объявлением сайт.ру/realtyxxxx.html (активная ссылка) по параметру (например street_id->name) внесено пустое значение, Внести изменения объявление по параметру ( street_id->name) (активная ссылка на редактирование) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chernetskiy 469 Жалоба Опубликовано: November 12, 2016 А может проще в data установить нужные поля как обязательные? Соответственно, пока их не заполнишь, новое объявление не сохранится, сообщая пользователю о незаполненности обязательных полей. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Realtor 47 Жалоба Опубликовано: November 12, 2016 Чем больше ограничений в вопросе заполнения, тем меньше шансов увеличения потока клиентов на сайт для размещения. Т.к. выходят сообщения после заполнения, и клиент снова должен найти поля которые не заполнил в куче полей заполнения, что отпугивает потенциальных клиентов. Чем проще , тем лучше Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Realtor 47 Жалоба Опубликовано: February 1, 2018 В 10.11.2016 в 15:31, rumantic сказал: Т.е. где-то эти поля могут быть и не пустыми, а где-то пустыми? Подумаем. При размещении объявления с параметрами город,улица,... комнат,этаж,этажность... phone при пустом значении phone не размещается объект как дубль. Есть ли возможности поставить условии сравнивать, когда phone не равно пустому значению ? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах