8ответ(ов) в теме
daniablag
не в сети 3 месяца
На сайте с 12.02.2015
Участник
Тем 37
Сообщения 109
1
00:29
Версия WP-Recall: 16.18.1
Версия дополнения: 1.2.2

Здравствуйте. Создал поиск с типом поля "число". Если точное вхождение в поиск то число входит. Мне же было необходимо чтоб искал меньше или равно заданного значения. Я добавил в функцию usf_edit_users_query следующий код

if ( $field['type'] == 'number' && count( $_REQUEST[$field['slug']] ) == 1 && ! $_REQUEST[$field['slug']][0] )
			continue;

		$tableAs = 'metas_' . $field['slug'];

		$compareValues = "<= '" . $_REQUEST[$field['slug']] . "'";

Поиск заработал. Если в поле вбито число 5, то когда в поиск вбиваем 7, он спокойно ищет всё что меньше или равно 7, и находит. Если же значение больше 10, то начинаются проблемы, т.к. тип переменной как я понял- строка, а не numeric. То есть для поиска что 10, что 1 = одно и тоже, нули он не воспринимает. Но как же выводить тогда поиск правильно) Может нужно изменить тип строки на число, тогда он будет учитывать нули. Но только как это сделать? Или может вы видите проблему в другом?

0
daniablag
не в сети 3 месяца
На сайте с 12.02.2015
Участник
Тем 37
Сообщения 109
2
05:25

Вобщем порылся. Пришёл к тому что нужно чтоб в массиве query был type => 'numeric'. Но вот как его прикрутить к моему значению поля не знаю. Уже и так и так пробовал. Там же в этом дополнении не напрямую массив создаётся, а откуда то что то подтягивается, много рцл функций подтигивается и вот пока что не могу понять как мне к моему полю

if ( $field['type'] == 'number' && count( $_REQUEST[$field['slug']] ) == 1 && ! $_REQUEST[$field['slug']][0] )
			continue;

		$tableAs = 'metas_' . $field['slug'];

		$compareValues = "<= '" . $_REQUEST[$field['slug']] . "'";
	

Приделать этот type => 'numeric' чтоб он как числа распознавал и нули не сбрасывал(

0
daniablag
не в сети 3 месяца
На сайте с 12.02.2015
Участник
Тем 37
Сообщения 109
3
05:49

И так же к этой теме ещё скажите пожалуйста, можно ли как то прикрутить конкретный мета кей к такому выводу. Чтоб только поле с определённым метакеем, выводилось вот так. Опять же наверное где то тут правки надо делать?

if ( $field['type'] == 'number' && count( $_REQUEST[$field['slug']] ) == 1 && ! $_REQUEST[$field['slug']][0] )
			continue;

		$tableAs = 'metas_' . $field['slug'];

		$compareValues = "<= '" . $_REQUEST[$field['slug']] . "'";

0
Андрей CS
не в сети 2 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16937
4
09:30

чтобы производить верную выборку по числам в mysql-запросе необходимо использовать конструкцию

CAST(`col_name` AS DECIMAL)

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

0
daniablag
не в сети 3 месяца
На сайте с 12.02.2015
Участник
Тем 37
Сообщения 109
5
14:40

Благодарю. А col_ name так и писать, или это метакей нашего поля или ещё что то вместо этого?

0
daniablag
не в сети 3 месяца
На сайте с 12.02.2015
Участник
Тем 37
Сообщения 109
6
15:27

И этот запрос в БД mysql писать. Или в коде допа к моему полю прилепить надо?

0
Андрей CS
не в сети 2 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16937
7
19:21

тот код, что вы вставляли от себя, он формирует mysql-запрос, вы пытались дополнить его выборкой по числовому значению, я подсказал как необходимо обращаться к значению в БД, чтобы оно воспринималось как число, я дал лишь шаблон, вам его потребуется изменить под себя

0
daniablag
не в сети 3 месяца
На сайте с 12.02.2015
Участник
Тем 37
Сообщения 109
8
00:39

Вопрос решил таким способо:
Переменную $compareValues написал вот так: $compareValues = "<= " . (double) $_REQUEST[$field['slug']];

Редакции сообщения
04.02.2020 00:40daniablagПричина: не указано
0
Тема закрыта. Публикация новых сообщений запрещена.