Дмитрий Кондин

Установка проверки граничных значений в формах

Recommended Posts

Делаю так: редактор форм-параметры-rules-Type:int,Min:10,Max:50000000000 

а в объявлении максимальная цена  4 294 967 295 руб . Почему так?

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


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

а в объявлении максимальная цена  4 294 967 295 руб . Почему так?

Это ограничение базы данных. 

Если вам нужны большие значения в базе, тогда надо менять тип поля в таблице re_data поле price

Тут подробнее о типах

http://dev.mysql.com/doc/refman/5.7/en/integer-types.html

Как вариант вместо INT поставить BIGINT

ALTER TABLE `re_data` CHANGE `price` `price` BIGINT(255) NULL DEFAULT NULL;

 

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


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

Делаю так: редактор форм-параметры-rules-Type:int,Min:10,Max:50000000000 

а в объявлении максимальная цена  4 294 967 295 руб . Почему так?

Нескромный вопрос, а вы на своем сайте продаете США с потрохами и его национальным долгом в $19 350 000 000 000 ? А цену надо показать в рублях? :)

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


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

требуется уточнение некоторых важных моментов
решили вписать 
rules=Type:int,Min:1,Max:25
таким образом ограничить этажность от 1этажа до 25 (так как ни зданий ни квартир 0этажности ведь нет :) )
да и ведь пользователь к примеру может просто криворуко забить объявление этаж поставить 0 а всего этажей 3 например -или наоборот мол этаж 3 а всего этажей 0

для этаж и этажей, однако  если поставить 0 и в этаж или в этажность то правило не действует почему то
поэтому не важно что так написать  rules=Type:int,Min:1,Max:25
что так rules=Type:int,Min:0,Max:25
действие одно и тоже происходить можно НОЛЬ вписать и при одном правиле и при другом

что не так ?

 

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


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

и еще вопросик а как сделать для площади запись типа просто 35,6 кв метров -то есть не целое число а 35целых6десятых  ну например квартирка у кого то такая
по правилу вроде так должно быть -но не уверены правильно ли ?
rules=Type:decimal,Min:3,Max:100
то есть вместо int применяем decimal ?

А как быть если мы хотим например номер дома тоже ограничить от написания словами?
вроде как было возможно поставить правило int минимум 1 максимум 2000
но тут загводка а как быть с буквенными домами?  например 105Б   или 223В или 156корпус1

хотелось бы максимально защититься от круворуких объявлений
 

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


Ссылка на сообщение
Поделиться на других сайтах
В 07.05.2016 в 00:38, doma сказал:

... решили вписать 
rules=Type:int,Min:1,Max:25
таким образом ограничить этажность от 1этажа до 25 (так как ни зданий ни квартир 0этажности ведь нет :) ) ...

Открою секрет, если будет подразумеваться выгрузка с сайта на сторонние порталы, указывается не только "0" - (цокольный этаж), но и "-1", "-2" и другие отрицательные значения - подземные этажи (технические, паркинги, машиноместа и прочие). Так-что не стоит ограничиваться диапазоном 1-25

В 07.05.2016 в 00:38, doma сказал:

... пользователь к примеру может просто криворуко забить объявление этаж поставить 0 а всего этажей 3 например -или наоборот мол этаж 3 а всего этажей 0 ...

1-й вариант будет правильным, 2-й - нет, задайте условие, чтобы этажность была равной или больше значения этажа.

В 07.05.2016 в 01:02, doma сказал:

и еще вопросик а как сделать для площади запись типа просто 35,6 кв метров -то есть не целое число а 35целых6десятых  ну например квартирка у кого то такая
по правилу вроде так должно быть -но не уверены правильно ли ?
rules=Type:decimal,Min:3,Max:100
то есть вместо int применяем decimal ?

Не писать никаких условий, пользователь сможет задать любые значения - 35.6 или 35,6 или 35целых6десятых :)

В 07.05.2016 в 01:02, doma сказал:

А как быть если мы хотим например номер дома тоже ограничить от написания словами?
вроде как было возможно поставить правило int минимум 1 максимум 2000
но тут загводка а как быть с буквенными домами?  например 105Б   или 223В или 156корпус1

И здесь тоже без условий, иначе буквы указать не получится.

Второй вариант, если номер дома оставить с правилом, но прикрутить отдельную позицию "Литер" и букву дома указывать в ней (лишняя на мой взгляд заморочка).

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


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

Открою секрет, если будет подразумеваться выгрузка с сайта на сторонние порталы, указывается не только "0" - (цокольный этаж), но и "-1", "-2" и другие отрицательные значения - подземные этажи (технические, паркинги, машиноместа и прочие). Так-что не стоит ограничиваться диапазоном 1-25

начнем с возражений :)))  мы понимаем что такое может быть, но с точки зрения эрудиции и нормативных актов, не бывает дома к примеру с отрицательной этажностью. Эти так называемые "народные обозначения" вносят смуту в логические выражения, это как примерно написать "куплю машиноместо или квартиру на минус первом этаже" :)). В нормативных документах если и бывают "минус этажи" то пишут со встроенными не жилыми подвальными помещениями или же со встроенными подземными машиноместами. :)

 


 

9 часов назад, Chernetskiy сказал:

1-й вариант будет правильным, 2-й - нет, задайте условие, чтобы этажность была равной или больше значения этажа.

подскажите как сделать и что и где написать


 

9 часов назад, Chernetskiy сказал:

Не писать никаких условий, пользователь сможет задать любые значения - 35.6 или 35,6 или 35целых6десятых

а вот тут опять двояко -либо дать возможность писать словами :( либо писать все же дробью. Так как например написав площадь словами - объявление например не будет найдено через поиск. И скорее всего еще одна загвоздка будет-если к примеру выгружать куда то на сайты
 

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


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

начнем с возражений :)))  мы понимаем что такое может быть, но с точки зрения эрудиции и нормативных актов, не бывает дома к примеру с отрицательной этажностью. Эти так называемые "народные обозначения" вносят смуту в логические выражения, это как примерно написать "куплю машиноместо или квартиру на минус первом этаже" :)). В нормативных документах если и бывают "минус этажи" то пишут со встроенными не жилыми подвальными помещениями или же со встроенными подземными машиноместами. :)

В домах не указывается отрицательная этажность. Однако указывается при указании этажа. Это международная практика и не знаю, как в деревне Гадюкино, а в Москве и в Подмосковье это работает и это понятно населению. Вы, входя в лифт современного здания и желая опуститься в подземное банковское хранилище или на подземную парковку ткнёте в кнопку "-1", "-2", "-3" или будете спорить с лифтом, читать Постановления СССР, ГОСТ, техническую документацию к лифту и пойдете в итоге пешком?

Если я пожелаю продать своё машиноместо на -1 этаже (а это отдельный объект недвижимости), что мне надо будет указать в объявлении, что я продаю квартиру на 25-м этаже и прилагаю к ней машиноместо в подвале? А если будет сдаваться торговая площадь в метро, будете продавать метро оптом? А еще (в Москве точно) существуют подземные объекты недвижимости без положительной этажности - торговые центры, паркинги, кинозалы и прочие...

Решать конечно вам, но в ГОСТах, например, нет информации об электронной почте или мобильниках, их тоже с сайта уберете а общение с клиентом переведете на голубиную почту? :)

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


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

Да, хотел уточнить, с нулевым этажом я приврал, цокольный этаж указывается как "-1", подвал указывается как "-2", "-3" и т.д., в зависимости от количества этажей вниз. Такие требования применяются на ряде порталов недвижимости, включены в формат выгрузки XML для Afy.ru и на других порталах.

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


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

не станем с вами спорить, так как возможно уверены " все" , так как какждый решает для себя что на кнопочке на лифте написать :)   у нас к примеру бабушка продает дом на 125 этаже-верить ли ей?  а еще есть дом 2 этажный так там вообще квартира на минус 10 этаже продается. вот только что то показать отказываются :) 
Вопрос не в том как обозвать этаж и сделать правильно, а как минимизировать и ошибки ввода этажности для криворуких пользователей и просто хулиганов, но еще и "алгоритм в коде" правильно воспринимал и обрабатывал.
Кстати ради эксперимента найдите на столь популярном ав_то этажи или что то другое на минус 1-2-3 этажах ссылки лучше в личку-так как другим это не интересно
Относительно емайлов и мобильников ни кто не мешает указать -желаете купить квартиру -пишите телеграмму-но речь вы понимаете не про это :)
можно же написать собственник моя бабушка, я ей перезвоню уточню, потом папке, потом старшему брату, потом вам
главное в алгоритме-минимизировать риски, а не ороться с ними
 

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


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

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

<parameters>	- Родительский элемент для описания дополнительных параметров 
<story>	 - Дочерний элемент тега parameters. Этаж объекта (целое число). Также доступны отрицательные значения. Подвал – значение тега «-2», Цоколь – значение тега «-1»
<story_count>	-	Дочерний элемент тега parameters. Этажность объекта (целое число) 

Если на каком-то сайте нет таких параметров как этаж "-1", "-2", то присутствуют "цоколь" и "подвал"... в любом случае у них одинаковый смысл а возможно и конвертация одного названия в другое при обмене базами в формате XML. Вы собирались указывать только числовые значения, то отрицательная этажность как вариант, или оставляйте на усмотрение пользователя, который будет писать -1 или цоколь, после чего запутаетесь сами, запутаете остальных да и поиск будет работать через пень-колоду.

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


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

ок придем к общему значению -исходя из вышеприведенных доводов  праивльнее будет указывать этаж например от минус 3 до +25 то есть минимальный этаж "-3" масимальный этаж "25" но вот будет ли так действовать правило?  если уж обозначать правило для этажа как целое число от и до, чтоы не давать возможность ввести слова "четырнадцатый"
так же у нас было предложение вместо сейф_стринг этаж например сделать селект_бокс то есть уже готовые шаблоны для пользователя, чтобы у него не было возможности кроме как выбрать-вместо вписать
как вы считаете -что разумнее и как правильнее
более подроно: у вас есть возможность при подаче объявления как пользователь не вписать значение этаж и этажность, а только выбрать из имеющихся значений, но тут другая сторона медали. Если производительность -то лучше в поле хранить просто значение одного поля, нежели когда селект бокс -перебирать для базы например все 25 этажей, с другой стороны к примеру проще обрабатывать базу например выбрав однозначные данные например только 23 этажи, вмесо вариантов -двадцать3этаж или двадцатрытий этаж или 23энтаж
 

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


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

вместо сейф_стринг этаж например сделать селект_бокс

В плане юзабилити пальма у селекбокса, так как там можно не только ввести отрицательные значения, но и указать их человеческими словами {-2~~подвал}...{1~~1}{2~~2}. Да и людям он понятнее.

в плане оптимальности - сейвстринг. поскольку селекбокс - это встроенный элемент-такой который "все свое носит с собой".

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

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


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

единственное требование - это реально меньше свободы пользователям. любыми способами. даже не говоря о тетях "с улицы", но и "профессиональные" риелторы способны написать самое разнообразное там, где это не запрещено)

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


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

В плане юзабилити пальма у селекбокса, так как там можно не только ввести отрицательные значения, но и указать их человеческими словами {-2~~подвал}...{1~~1}{2~~2}. Да и людям он понятнее.

в плане оптимальности - сейвстринг. поскольку селекбокс - это встроенный элемент-такой который "все свое носит с собой".

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

да и в большинстве случаев при парсинге будут нормальные значения от минус2 до +25 в осномном -это именно про этаж а не этажность :))   
 

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


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

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

вот именно что в "большинстве". в этом еще один плюс правил на элементе в отличии от селектбокса. селект применяется только на форме. выставив для него разрешенные значения вы просто запрещаете пользователю выбрать недопустимое. но селать пост-запрос с "кривыми" значениями или при парсинге, где формы нет, а сразу есть готовые значения, и селект уже не сработает, в отличии от правил, которые проверяются перед самим процессом сохранения.

так что селект - это больше интерфейсное ограничение, а правила - внутреннее.

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


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

вот именно что в "большинстве". в этом еще один плюс правил на элементе в отличии от селектбокса. селект применяется только на форме. выставив для него разрешенные значения вы просто запрещаете пользователю выбрать недопустимое. но селать пост-запрос с "кривыми" значениями или при парсинге, где формы нет, а сразу есть готовые значения, и селект уже не сработает, в отличии от правил, которые проверяются перед самим процессом сохранения.

так что селект - это больше интерфейсное ограничение, а правила - внутреннее.

все это понятно и правильно :)
но мы про то что, например при парсинге редкобудет этаж или этажность не числовым, а если даже и будет то в ДАТА не внесется так как не будет совпадений,  таким образом минимизируются возможные ошибки при парсинге, а если сделать сейфстринг то туда может занестись любое значение и кол-во ошибок увеличивается
Пример 3этаж можно написать   "этаж № 3" "3этаж" "3 этаж" "3-й этаж" и так далее, хотя по факту это одно значение :)) так что пусть выбирают а не вписывают :)

правильно ли мы поняли вышенаписанное что если например у нас этаж минимум1 максимум5 выставлено и селект бокс стоит, то если при парсинге будет этаж 8-цифрой, то в дата ничего не занесеться?   или занесеться этаж 8-цифрой?
 

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


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

апример у нас этаж минимум1 максимум5 выставлено и селект бокс стоит, то если при парсинге будет этаж 8-цифрой, то в дата ничего не занесеться?   или занесеться этаж 8-цифрой?

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

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


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

правильно ли мы поняли вышенаписанное что если например у нас этаж минимум1 максимум5 выставлено и селект бокс стоит, то если при парсинге будет этаж 8-цифрой, то в дата ничего не занесеться?   или занесеться этаж 8-цифрой?

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

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


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

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

это как это для проверки?

и как пишет Игорь в базу занесется 8этаж, но вследствии того что нет соответствия то ничего не отобразиться. Следовательно вопрос, а если спустя время добавить соотвествие например сделать этаж от 1до9 то автоматом -все корректно будет работать-или возможен глюк?

и еще -главного ответа вроде не было -как правила то писать?
рулес=инт,мин "-2", макс "+9" ????
 

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


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

то в базу запишется 8 (поскольку в обход сайта)

не совсем в обход, поскольку стандартная проверка данных, которая включает в себя проверку по правилам rules, обычно применяется. пропущен только пункт который собирает данные из запроса по полям с помощью модели - фактически работа с формой. Но базовые низкоуровневые проверки такие как "непустота", "обязательность" применятся. по крайней мере насколько я помню почти все добавления в общеупотребительных местах идут через стандартный интерфейс.

На сайте не отобразится тоже местами. Там где для вывода используется модель - карточка, похожие и данное берется из .value_string то не покажется. А вот если запросить значение .value то там как раз будет то самое которое пришло из парсинга.

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


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

как правила то писать?
рулес=инт,мин "-2", макс "+9" ????
 

Type:int,Min:-2,Max:9

плюс не мешает, но можно не писать. но это правило будет значить любое значение от -2 до 9 целое, и ноль.

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


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

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

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

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

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

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

Войти

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

Войти сейчас